Jump to content

Patching Framebuffer Personalities to Enable Additional Ports


protogon
 Share

5 posts in this topic

Recommended Posts

I've been trying for a few days now to get full 2D/3D acceleration working on my 10.10.2 hackintosh, which is running a Sapphire HD6450 Flex 1GB. Very few people have this card, it seems, and I've taken to writing my own connector info strings for it. After a TON of trial and error, I managed to write a working set of connector strings:

DVI-I (Physical Port 0, maybe port 1 or 2 as mapped on the card itself)

04 00 00 00 14 02 00 00 00 01 01 00 10 00 01 03
ConnTypes  |ATY,CTRLFLG|ATY,FEATURE|TX|EN|HP|ID
--
HDMI (HDMI-A, as radeonbiosdecode and redsock call it)

00 08 00 00 04 02 00 00 00 01 02 00 12 04 02 01 
ConnTypes  |ATY,CTRLFLG|ATY,FEATURE|TX|EN|HP|ID
--
DVI-D (Actually DisplayPort according to the decoding tools)

00 04 00 00 04 03 00 00 00 01 00 00 21 03 01 04
ConnTypes  |ATY,CTRLFLG|ATY,FEATURE|TX|EN|HP|ID

--
040000001402000000010100100001030008000004020000000102001204020100040000040300000001000021030104

You might notice that the Hotplug IDs are duplicated, but I have not yet run into problems because of that, probably because I don't frequently unplug and replug my monitors.

 

There's a whole story behind how I figured these out, lots of notes in textedit, and quite a bit of frustration with the guides I've found (RampageDev's guide in particular), but that's another post entirely.

 

That said, part of it is relevant here. Based on a post on TonyMac, I attempted to patch the Pithecia framebuffer personality. Prior to 10.10, it seems that Pithecia had ConnectorInfo strings for three ports. I tried for a long while to get my card working with this framebuffer, and the best I could achieve was getting DVI-D (white port) to work with HDMI and DVI-I being treated as the same connector, duplicating their output. It was only after a bunch of testing that I found Vlada. had managed to get a dump of the 10.10.1 framebuffer ConnectorInfo entries. This confirmed my suspicion that ati-personality-pl v0.15 doesn't work with the latest version of the Xcode CLI tools. 

 

The Pithecia framebuffer, unfortunately, only has a ConnectorInfo count of 2 in 10.10.2. It also happens to be the fastest framebuffer I've tried with this card.

 

I've been using the Clover ATI Connectors Data patch method, and there seems to be something kind of funny with this approach. With the connectors I wrote, I can patch and use any framebuffer with 3+ connectors. I've tried Bulrushes, Cattail, Duckweed, Ipomoea, Juncus, Osmunda, and Pondweed, and I've found that none of them offer very different QE/CI performance from the stock RadeonFrameBuffer. They all score around 80 in NovaBench, which I think is at least slightly odd. Why isn't there any variance depending on what framebuffer I use? Does it have something to do with the ConnectorInfo strings I wrote? Is there something wrong with them?

 

Pithecia is the only framebuffer personality I've managed to patch (by replacing its ConnectorInfo and, ostensibly, the first line of the next framebuffer personality with my own ConnectorInfo strings) that doesn't perform exactly like RadeonFrameBuffer, but at the expense of a monitor. Perhaps it's the fact it only drives two monitors that gives me the performance boost. Maybe this GPU just sucks.

 

Anyhow, there are a couple approaches I see, potentially. If there's some way to patch Pithecia so that the system reads three lines of ConnectorInfo from it, I could confirm whether or not it really is the best framebuffer personality for this card. Perhaps there's a way to use the old ATI6000Controller Kext in 10.10.2, but I imagine that's probably a super hacky solution liable to break upon an update. 

 

What's the best option here for what I'm trying to do? I'm kind of concerned I'm attempting to take the wrong route for what I'm trying to accomplish because I don't really know what my options are.

Link to comment
Share on other sites

first of all, take a look if all kext AMD is loading like this, a example to ATI HD5000 series

 

sudo  kextstat | grep AMD

 

 76    2 0xffffff7f81f88000 0x12d000   0x12d000   com.apple.kext.AMDSupport (1.3.0) <75 64 12 11 7 5 4 3 1>  #### support to ATI Cards

   77    0 0xffffff7f825df000 0x414000   0x414000   com.apple.kext.AMD5000Controller (1.3.0) <76 64 12 11 5 4 3 1> ##### Full Resulution

   93    0 0xffffff7f82130000 0x3a8000   0x3a8000   com.apple.AMDRadeonX3000 (1.3.0) <92 64 12 7 5 4 3 1> ##### QE/CI

 

   99    0 0xffffff7f825a8000 0x24000    0x24000    com.apple.kext.AMDFramebuffer (1.3.0) <76 64 12 11 7 5 4 3 1> ##### Default Framebuffer

Link to comment
Share on other sites

first of all, take a look if all kext AMD is loading like this, a example to ATI HD5000 series

 

sudo  kextstat | grep AMD

 

 76    2 0xffffff7f81f88000 0x12d000   0x12d000   com.apple.kext.AMDSupport (1.3.0) <75 64 12 11 7 5 4 3 1>  #### support to ATI Cards

   77    0 0xffffff7f825df000 0x414000   0x414000   com.apple.kext.AMD5000Controller (1.3.0) <76 64 12 11 5 4 3 1> ##### Full Resulution

   93    0 0xffffff7f82130000 0x3a8000   0x3a8000   com.apple.AMDRadeonX3000 (1.3.0) <92 64 12 7 5 4 3 1> ##### QE/CI

 

   99    0 0xffffff7f825a8000 0x24000    0x24000    com.apple.kext.AMDFramebuffer (1.3.0) <76 64 12 11 7 5 4 3 1> ##### Default Framebuffer

 

kextstat output:

user@userbox.local:~ $ sudo kextstat | grep AMD                          
Password:
   72    2 0xffffff7f81e92000 0x11f000   0x11f000   com.apple.kext.AMDSupport (1.3.0) <67 66 12 11 7 5 4 3 1>
   73    0 0xffffff7f8246e000 0x41b000   0x41b000   com.apple.kext.AMD6000Controller (1.3.0) <72 66 12 11 5 4 3 1>
   89    0 0xffffff7f81fbf000 0x3a8000   0x3a8000   com.apple.AMDRadeonX3000 (1.3.0) <68 66 12 7 5 4 3 1>
   93    0 0xffffff7f82437000 0x24000    0x24000    com.apple.kext.AMDFramebuffer (1.3.0) <72 66 12 11 7 5 4 3 1>
 
Additionally, here's the ioreg output:
 
user@userbox.local:~ $ ioreg | grep ATY                                                      
    | |   |   | +-o ATY,Pithecia@0  <class AtiFbStub, id 0x1000002f7, registered, matched, active, busy 0 (1 ms), retain 8>
    | |   |   | +-o ATY,Pithecia@1  <class AtiFbStub, id 0x1000002f8, registered, matched, active, busy 0 (5 ms), retain 8>

Also try running ati-personality-pl v0.15 as follows:

 

./ati-personality-pl -o=10.9

 

this will make the script run with the latest Xcode CLI tools

 

Thank you! That's not a flag that seems to be documented very thoroughly. Definitely isn't in the usage string. I was running the script with the -a flag, which got me the names and offsets, but no ConnectorInfo counts.

Link to comment
Share on other sites

  • 1 year later...

Very interesting for me...hack test with a X8STE Supermicro and AMD 6450 (Framebuffer LOTUS):

 

OS X 10.11.6 ... most time kernel Dump by load .. I think it has todo with the power managment. When it get trough - buffer isn't load

 

OSX 10.10.5 .. Load all the time but doesn't load the framebuffer correct. as 10.11

 

OSX 10.7 Cursor with white screen, with the right resolution

 

./radeon_bios_decode < VER013.012.000.049.000000_1002_6779.rom 

ATOM BIOS Rom: 

SubsystemVendorID: 0x174b SubsystemID: 0xe164

IOBaseAddress: 0xc000

Filename: 164P03N5.NI2

BIOS Bootup Message: 

C26401 Junbonator DDR3 128Mx16                                              

 

PCI ID: 1002:6779

Connector at index 0

Type [@offset 44578]: HDMI-A (11)

Encoder [@offset 44582]: INTERNAL_UNIPHY1 (0x20)

i2cid [@offset 44652]: 0x91, OSX senseid: 0x2

Connector at index 1

Type [@offset 44588]: DVI-D (3)

Encoder [@offset 44592]: INTERNAL_UNIPHY (0x1e)

i2cid [@offset 44679]: 0x93, OSX senseid: 0x4

Connector at index 2

Type [@offset 44598]: VGA (1)

Encoder [@offset 44602]: INTERNAL_KLDSCP_DAC1 (0x15)

i2cid [@offset 44706]: 0x90, OSX senseid: 0x1

  

./redsock_bios_decoder < VER013.012.000.049.000000_1002_6779.rom 

164P03N5.NI2:

 

C26401 Junbonator DDR3 128Mx16                                              

 

Subsystem Vendor ID: 174b

       Subsystem ID: e164

Object Header Structure Size: 203

Connector Object Table Offset: 34

Router Object Table Offset: 0

Encoder Object Table Offset: 9d

Display Path Table Offset: 12

Connector Object Id [12] which is [HDMI_TYPE_A]

encoder obj id [0x20] which is [iNTERNAL_UNIPHY1 (osx txmit 0x21 [duallink 0x1] enc 0x3)] linkb: true

Connector Object Id [4] which is [DVI_D]

encoder obj id [0x1e] which is [iNTERNAL_UNIPHY (osx txmit 0x10 [duallink 0x0] enc 0x0)] linkb: false

Connector Object Id [5] which is [VGA]

encoder obj id [0x15] which is [iNTERNAL_KLDSCP_DAC1 (osx txmit 0x00 enc 0x10?)] linkb: false

 

 

Personality: Lotus

ConnectorInfo count in decimal: 3

Disk offset in decimal 1855536

0000000    00040000  04  03  000000010000  11  02  01  01

0000010    00080000  04  02  000000010000  22  05  04  04

0000020    00040000  00  01  000000010000  21  03  02  02

0000030

 

 

Prepair

 

0000000    04000000 04  00  000000010000  10  00  01  04

0000010    00080000 04  02  000000010000  21  03  00  02

0000020    10000000 10  00  000000010000  00  10  02  01

 

buy the way, one of the 2009 mac pro bluetooth and usb is fixed after 10.11.6 in my office

Link to comment
Share on other sites

 Share

×
×
  • Create New...