netkas.org forum
April 26, 2017, 08:36:38 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Information for registering users http://forum.netkas.org/index.php/topic,2246.0.html
 
   Home   Help Search Login Register  
Pages: [1] 2 3 4
  Print  
Author Topic: 5xxx displayport monitors and active adapters working with RadeonFramebuffer  (Read 58008 times)
calvintml
Full Member
***
Offline Offline

Posts: 131


« on: June 26, 2011, 12:45:57 AM »

I think I've made some progress in understanding why displayport isn't working for non-vanilla 5000 series ATI cards.  I have been able to get displayport working with a simple renaming of certain personalities in ATI5000Controller.  Furthermore, I have been able to get displayport working when RadeonFramebuffer is loaded.

I have posted previously about how you can get displayport working if you swap in port mappings that are specific for your card into the vanilla framebuffer personalities (such as Hoolock, or Langur): http://forum.netkas.org/index.php/topic,864.0.html

This made me wonder, is there something in ATI5000Controller which determines whether displayport is working? or is it some other kext which is making this happen?  I looked into the ATI5000Controller for differences in how the vanilla personalities like Hoolock and Langur were treated relative to the other, non-vanilla, personalities like Vervet and Uakari.  I used idapro and hexsys (thanks Netkas for the suggestion!).  However, I couldn't find a difference (besides the different port mappings) in how the different personalities were defined in that kext.  Weird.

So I decided that it must be another kext which is determining that displayport only works for vanilla framebuffers.  What if what's really important is that the card is injected as Hoolock by Chameleon or ATYinit, and not what happens in the ATI5000Controller?  To test this, I opened up the  ATI5000Controller binary (you can do this in any old text editor), and replaced all instances of Hoolock with Hoolocc (misspelled on purpose) and replaced all instances of Zonalis (the framebuffer personality for my card) with Hoolock.  Now instead of using the default code for Hoolock, the code for Zonalis is used , because it is now named Hoolock!  This worked beautifully, and displayport worked great even though the code for Zonalis was being used, and the code for Hoolock in wasn't being accessed at all, mainly because it had been renamed to Hoolocc.

The coolness didn't stop there.  As has been posted by Netkas on his blog a while ago, if you do not inject your card, these new kexts will load your ports properly using "RadeonFramebuffer", but, at least for 5xxx cards, displayport and active adapters do not work.  No doubt several of you have also noticed that if you inject a framebuffer that doesn't exist (for example, AtiConfig=asdf), then RadeonFramebuffer will load, again with the same properties.  I found that if you inject Hoolock (AtiConfig=Hoolock) when Hoolock is misspelled in ATI5000Controller (i.e. rename all instances from Hoolock to Hoolocc) then it defaults to RadeonFramebuffer and loads all the ports correctly.   But in this case, displayport also works!  This is exciting because it enables dispalyport for 5xxx cards without the user having to manually determine what framebuffer is best and whether port mappings need to be edited.  Unfortunately, this does not solve the geekbench/steam crashing issue seen with RadeonFramebuffer.

All this means that ATI5000Controller does not determine whether displayport works for 5xxx cards.  Instead, it must be another kext which requires that a vanilla framebuffer personality is injected.  What this kext is I don't know, does anyone have a guess?

I have attached links to two edited ATI5000Controller files from 10.6.8.

The first one will load RadeonFramebuffer if you specifiy AtiConfig=Hoolock or AtiConfig=Langur.  This should work for any 5xxx card but will have the geekbench crashing issue.

The second will load the code for Vervet if you specify AtiConfig=Hoolock and the code for Uakari if you specify AtiConfig=Langur  This should work for the standard 5770 and 5870 cards (respectively).

I hope this rather painlessly gets displayport working for people in 10.6.8 as it was working in 10.6.7.  Let me know if it works for you.

http://www.mediafire.com/?u5f9b8yb0yc8vew

http://www.mediafire.com/?uzzvs2glyomlbs7
« Last Edit: June 28, 2011, 10:47:21 AM by netkas » Logged
Rominator
Hero Member
*****
Offline Offline

Posts: 2101



« Reply #1 on: June 26, 2011, 01:49:50 AM »

Thank you so much for posting this. Always nice when people come here and offer help.

As I am on a Mac Pro< it is more difficult for me to try this out.

I have a 5870 with 6 MDPs on it, we have never gotten it to work properly.

Maybe Netkas can take these valuable findings and create an ATY_Init that fixes these issues on Mac Pros. Would be awesome if the 6 port 5870 could be made to work properly.

Thanks again for posting.
Logged

Before asking a question, check your "Personal Settings" and be sure that you have "Brain Services" set to "On".
calvintml
Full Member
***
Offline Offline

Posts: 131


« Reply #2 on: June 26, 2011, 03:36:19 AM »

Rominator, sorry if this is ignorant because I've never fooled around with a Mac Pro, but is there a way to have ATY_Init inject Langur (or Hoolock) for your card, or to create an efi rom that injects langur (or hoolock)? If I remember correctly, when netkas first hacked the 5770 efi rom, it was still injecting Hoolock (the vanilla personality); later he switched it to Vervet.  If either of those methods work, I think using the first ATI5000Controller I posted, you should be able to get your card to work.

Thank you so much for posting this. Always nice when people come here and offer help.

As I am on a Mac Pro< it is more difficult for me to try this out.

I have a 5870 with 6 MDPs on it, we have never gotten it to work properly.

Maybe Netkas can take these valuable findings and create an ATY_Init that fixes these issues on Mac Pros. Would be awesome if the 6 port 5870 could be made to work properly.

Thanks again for posting.
Logged
toleda
Newbie

Offline Offline

Posts: 8


« Reply #3 on: June 26, 2011, 09:15:48 PM »

calvintml

I have a Sapphire HD 5870 Vapor X OC.  I use the HDMI and DP ports with audio; I don't use the DVI ports.  As expected, no DP with 10.6.8. I tried the second file with AtiConfig=Langur.  The result was no graphics at all; System Profiler/Graphics/Displays: "No information found" and IOReg: PEGP@3/AppleACPIPCI/GFX0@0 only.  Fortunately, Screen Sharing worked and I am back to 10.6.8 with HDMI only (btw, HDMI audio is broken).  Given the high probability that I made an installation error, please confirm my assumption. I replaced the binary in ATI5000Controller.kext/Contents/MacOS with the renamed file (a 692KB document) from your download link.  I'm available for additional testing.



Logged
calvintml
Full Member
***
Offline Offline

Posts: 131


« Reply #4 on: June 26, 2011, 09:22:39 PM »

what happens with the first file?

edit:
your installation seems fine provided you are repairing permissions and clearing caches:
sudo -s
chmod -R 755 /System/Library/Extensions/ATI*
chown -R 0:0 /System/Library/Extensions/ATI*
rm -rv /System/Library/Caches/com.apple.kext.caches/*
touch /System/Library/Extensions
« Last Edit: June 26, 2011, 09:38:58 PM by calvintml » Logged
toleda
Newbie

Offline Offline

Posts: 8


« Reply #5 on: June 27, 2011, 02:29:02 AM »

I did not try the first file. When I return from holiday, I will try it.  For permissions and caches, I ran Kext Utility before rebooting.  One more piece of info, the screen on the HDMI port was full of the message: "IOHID System: postEventLCEventQueue overflow". 

Logged
jrd0
Newbie

Offline Offline

Posts: 6


« Reply #6 on: June 28, 2011, 01:11:53 AM »

I tried your first file with my 5850, I just ended up in vesa mode.

So I altered the standard 1.6.8 kext changing Langur to Languu and Uakari to Langur, couldn't get the display port working though.

It shows up in in the monitors but has no picture, I am also using 2 dvi.
Logged
calvintml
Full Member
***
Offline Offline

Posts: 131


« Reply #7 on: June 28, 2011, 01:57:26 AM »

Frustrating.  Can you try the first file again with AtiConfig=Hoolock
Logged
jrd0
Newbie

Offline Offline

Posts: 6


« Reply #8 on: June 28, 2011, 02:01:56 AM »

I tried both buffers same thing, no kext loaded in the system info and in vesa mode.

Anything you think might work let me know, I miss my third monitor  Cry
Logged
calvintml
Full Member
***
Offline Offline

Posts: 131


« Reply #9 on: June 28, 2011, 02:29:54 AM »

did you run these commands?
sudo -s
chmod -R 755 /System/Library/Extensions/ATI*
chown -R 0:0 /System/Library/Extensions/ATI*
rm -rv /System/Library/Caches/com.apple.kext.caches/*
touch /System/Library/Extensions

and did you rename ATI5000Controller_Hoolock-Hoolocc__Langur-Languu_ to ATI5000Controller?
Logged
jrd0
Newbie

Offline Offline

Posts: 6


« Reply #10 on: June 28, 2011, 02:47:06 AM »

I just tried again, it loaded the kexts this time and the two dvi monitors work as usual but no output to the displayport.

I tried both Lugar & Hoolock and renamed it.
Logged
calvintml
Full Member
***
Offline Offline

Posts: 131


« Reply #11 on: June 28, 2011, 02:54:48 AM »

this is the first file, the one named ATI5000Controller_Hoolock-Hoolocc__Langur-Languu_?

what does your ioreg dump say? which framebuffer personality is loaded?
Logged
jrd0
Newbie

Offline Offline

Posts: 6


« Reply #12 on: June 28, 2011, 03:00:14 AM »

this is the first file, the one named ATI5000Controller_Hoolock-Hoolocc__Langur-Languu_?

what does your ioreg dump say? which framebuffer personality is loaded?

Code:
hackintosh:~ jrd$ ioreg | grep ATY
    | |   |   | +-o ATY,ATY,RadeonFramebuffer@0  <class AtiFbStub, id 0x100000359, registered, matched, active, bus$
    | |   |   | | +-o ATY_ATY,RadeonFramebuffer  <class ATIFramebuffer, id 0x100000360, registered, matched, active$
    | |   |   | +-o ATY,ATY,RadeonFramebuffer@1  <class AtiFbStub, id 0x10000035a, registered, matched, active, bus$
    | |   |   | | +-o ATY_ATY,RadeonFramebuffer  <class ATIFramebuffer, id 0x1000003e0, registered, matched, active$
    | |   |   | +-o ATY,ATY,RadeonFramebuffer@2  <class AtiFbStub, id 0x10000035b, registered, matched, active, bus$
    | |   |   | | +-o ATY_ATY,RadeonFramebuffer  <class ATIFramebuffer, id 0x1000003e6, registered, matched, active$
    | |   |   | +-o ATY,ATY,RadeonFramebuffer@3  <class AtiFbStub, id 0x10000035c, registered, matched, active, bus$
    | |   |   | | +-o ATY_ATY,RadeonFramebuffer  <class ATIFramebuffer, id 0x1000003ec, registered, matched, active$

Edit: yes the first file.
Logged
calvintml
Full Member
***
Offline Offline

Posts: 131


« Reply #13 on: June 28, 2011, 03:07:02 AM »

Are you positive that your injection is working?  If you use the original ATI5000Controller, do you see ATY,Langur in the ioreg dump.  Also what was your last working configuration (for displayport)?
« Last Edit: June 28, 2011, 03:39:01 AM by calvintml » Logged
bb2b
Newbie

Offline Offline

Posts: 2


« Reply #14 on: June 28, 2011, 06:55:30 PM »

Tried both your attached files and it kinda works.

I have a 3 screen setup on a 5870 eyefinity 6 card which worked fine on 10.6.7 using Uakari (two displays on DVI and one via DP)

Since 10.6.8 the DP broke ofc, it was detected but stayed black. Right now i have success with the first file using RadeonFramebuffer but it only gives me two screens (DP + DVI), so DP works but 3 screens don't.
I also tried the second file with Langur/Uakari but that froze at boot, just after the grey screen should disappear and before the login screen.
Logged
Pages: [1] 2 3 4
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines
SMFAds for Free Forums
Valid XHTML 1.0! Valid CSS!