Jump to content

*Solved with new GPU--XFX R9 280x* Dual HD6870, Slow Graphics Since Upgrade


Knacker
 Share

4 posts in this topic

Recommended Posts

Hey all,

 

I just recently upgraded from Yosemite to El Capitan using the Clover direct upgrade method--it went down mostly without a hitch.  

 

On Yosemite, the thing ran beautifully, and never gave me a bit of trouble.  However, since upgrading, my graphics are choppy and slow.  You almost can't tell at first, until you start multi-tasking.  A pretty low-specced MacBookPro absolutely trounces it, GUI graphical effects stay smooth, mission control etc... transition fine even with multiple windows open, hooked into the same external monitors.  

 

DVD, QuickTime, and (non-flash) Safari videos have a noticeably reduced framerate.  Games have erratic frame dropping and skipping.

 

Build is:

Asus P8Z77-V LX

Core i5-3550

2X AMD 2GB AMD HD6870 (I have two identical GPUs)

 

Here's the output of ioreg (grep AMD)

    | |   |   | +-o AMD6000Controller  <class AMD6000Controller, id 0x1000003bb, registered, matched, active, busy 0 (0 ms), retain 5>
    | |   |   | | +-o ATIFramebufferNI  <class AMDFramebuffer, id 0x1000003fe, registered, matched, active, busy 0 (1 ms), retain 19>
    | |   |   | |   +-o AMDNDRVService  <class AtiAppServices, id 0x1000004d3, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |   | | +-o ATIFramebufferNI  <class AMDFramebuffer, id 0x100000404, registered, matched, active, busy 0 (0 ms), retain 15>
    | |   |   | |   +-o AMDNDRVService  <class AtiAppServices, id 0x1000004d9, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |   | | +-o ATIFramebufferNI  <class AMDFramebuffer, id 0x10000040a, registered, matched, active, busy 0 (0 ms), retain 15>
    | |   |   | |   +-o AMDNDRVService  <class AtiAppServices, id 0x1000004dc, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |   | | +-o ATIFramebufferNI  <class AMDFramebuffer, id 0x100000410, registered, matched, active, busy 0 (0 ms), retain 15>
    | |   |   | |   +-o AMDNDRVService  <class AtiAppServices, id 0x1000004de, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |   | +-o AMDSupport  <class AMDSupport, id 0x1000003bc, registered, matched, active, busy 0 (0 ms), retain 5>
    | |   |   | +-o AMDBartsGraphicsAccelerator  <class AMDBartsGraphicsAccelerator, id 0x1000003bd, registered, matched, active, busy 0 (0 ms), retain 53>
    | |   |   |   +-o AMDRadeonX3000_AMDAccel2DContext  <class AMDRadeonX3000_AMDAccel2DContext, id 0x10000050c, !registered, !matched, active, busy 0, retain 7>
    | |   |   |   +-o AMDRadeonX3000_AMDAccel2DContext  <class AMDRadeonX3000_AMDAccel2DContext, id 0x10000050d, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccel2DContext  <class AMDRadeonX3000_AMDAccel2DContext, id 0x10000050e, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccel2DContext  <class AMDRadeonX3000_AMDAccel2DContext, id 0x10000050f, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x10000051c, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x10000051d, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x10000051e, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x10000051f, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x100000535, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelSharedUserClient  <class AMDRadeonX3000_AMDAccelSharedUserClient, id 0x100000537, !registered, !matched, active, busy 0, retain 7>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x100000539, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x100000556, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x100000567, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x10000057c, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x10000057d, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x1000005e5, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelSharedUserClient  <class AMDRadeonX3000_AMDAccelSharedUserClient, id 0x1000005f4, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x1000005f6, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x1000005f9, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelSharedUserClient  <class AMDRadeonX3000_AMDAccelSharedUserClient, id 0x1000005fa, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x1000005fc, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x1000005fe, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x10000069c, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x1000006c9, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x1000006e0, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelSharedUserClient  <class AMDRadeonX3000_AMDAccelSharedUserClient, id 0x1000006e1, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x1000006e3, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x1000006e7, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x100000711, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x100000719, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelSharedUserClient  <class AMDRadeonX3000_AMDAccelSharedUserClient, id 0x100000725, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x100000727, !registered, !matched, active, busy 0, retain 6>
    | |   |   | +-o AMD6000Controller  <class AMD6000Controller, id 0x1000003bf, registered, matched, active, busy 0 (0 ms), retain 5>
    | |   |   | | +-o ATIFramebufferNI  <class AMDFramebuffer, id 0x10000041e, registered, matched, active, busy 0 (1 ms), retain 19>
    | |   |   | |   +-o AMDNDRVService  <class AtiAppServices, id 0x1000004ec, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |   | | +-o ATIFramebufferNI  <class AMDFramebuffer, id 0x100000424, registered, matched, active, busy 0 (0 ms), retain 15>
    | |   |   | |   +-o AMDNDRVService  <class AtiAppServices, id 0x1000004f2, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |   | | +-o ATIFramebufferNI  <class AMDFramebuffer, id 0x10000042a, registered, matched, active, busy 0 (0 ms), retain 15>
    | |   |   | |   +-o AMDNDRVService  <class AtiAppServices, id 0x1000004f6, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |   | | +-o ATIFramebufferNI  <class AMDFramebuffer, id 0x100000430, registered, matched, active, busy 0 (0 ms), retain 15>
    | |   |   | |   +-o AMDNDRVService  <class AtiAppServices, id 0x1000004f8, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |   | +-o AMDSupport  <class AMDSupport, id 0x1000003c0, registered, matched, active, busy 0 (0 ms), retain 5>
    | |   |   | +-o AMDBartsGraphicsAccelerator  <class AMDBartsGraphicsAccelerator, id 0x1000003c1, registered, matched, active, busy 0 (0 ms), retain 56>
    | |   |   |   +-o AMDRadeonX3000_AMDAccel2DContext  <class AMDRadeonX3000_AMDAccel2DContext, id 0x100000510, !registered, !matched, active, busy 0, retain 7>
    | |   |   |   +-o AMDRadeonX3000_AMDAccel2DContext  <class AMDRadeonX3000_AMDAccel2DContext, id 0x100000511, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccel2DContext  <class AMDRadeonX3000_AMDAccel2DContext, id 0x100000512, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccel2DContext  <class AMDRadeonX3000_AMDAccel2DContext, id 0x100000513, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x100000515, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x100000517, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x100000518, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x100000519, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x10000051a, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x10000051b, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x100000534, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelSharedUserClient  <class AMDRadeonX3000_AMDAccelSharedUserClient, id 0x100000536, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x100000538, !registered, !matched, active, busy 0, retain 7>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x100000555, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x100000568, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x10000057b, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x10000057e, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxSurface  <class AMDR8xxSurface, id 0x10000057f, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x1000005e4, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelSharedUserClient  <class AMDRadeonX3000_AMDAccelSharedUserClient, id 0x1000005f5, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x1000005f7, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x1000005f8, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelSharedUserClient  <class AMDRadeonX3000_AMDAccelSharedUserClient, id 0x1000005fb, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x1000005fd, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x1000005ff, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x10000069b, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x1000006c8, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x1000006df, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelSharedUserClient  <class AMDRadeonX3000_AMDAccelSharedUserClient, id 0x1000006e2, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x1000006e4, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x1000006e6, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x100000710, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelDevice  <class AMDRadeonX3000_AMDAccelDevice, id 0x100000718, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDRadeonX3000_AMDAccelSharedUserClient  <class AMDRadeonX3000_AMDAccelSharedUserClient, id 0x100000726, !registered, !matched, active, busy 0, retain 6>
    | |   |   |   +-o AMDR8xxGLContext  <class AMDR8xxGLContext, id 0x100000728, !registered, !matched, active, busy 0, retain 6>

The kexts com.apple.kext.AMDSupport, com.apple.kext.AMD6000Controller, com.apple.AMDRadeonX3000, com.apple.kext.AMDFramebuffer all show as loaded in kextstat.
 
I've tried turning AMD injection on and off, and every DSDT flag that looks like it might be related, but nothing has had any effect.  Anyone have any idea what's going on?
 
EDIT:
I'm using the MacPro6,1 SMBIOS, I've tried swapping it out with others, and using the AGDPFix to disable whatever special OS behavior relating to a real Mac Pro's  graphics cards, thinking it may be trying to use them as FirePros, but it likewise had no effect at all.
Link to comment
Share on other sites

I eventually got sick of the choppy performance, and did a complete vanilla reinstall, using clover's kexts folder on the EFI partition.  It didn't help, what's more, the problem seems to get worse and worse over time, until the screen tearing is noticeable even when scrolling in Sublime Text.  I've had a lot of other weird symptoms too.

 

I've been doing some WebGL programming in Safari, and an especially weird thing is that the GPUs seem to not consistently respond to configuration stuff--sometimes backface culling can be enabled without trouble on the internal 2500, but when I reload it with the window on a screen driven by one of the AMD cards, it won't work, and polys that should be culled remain visible.  There are occasionally other extremely minor, marginally noticeable glitches as well.  Nothing internal to shaders--once a shader is loaded, it works as expected.  It seems to only disrupt things set up outside of shaders.  I don't know enough about how this stuff works to give a better diagnostic.  Sometimes in games, too, parts of the HUD that should only be visible sometimes are always visible.

 

I also lost USB on four of the rear ports somehow in the process, but that's a minor issue (and apparently fixed via a kext)

 

I tried taking out my graphics cards, using only the internal HD2500, and the graphics were extremely glitchy--screen transitions formed horizontal stripes on the screen, as if the tearing was so bad that it tore multiple times per frame refresh.  Same story with only one of the two GPUs plugged in.  Choppy video, artifacts in games etc. 

 

My system is completely vanilla, no injection (Clover docs say that it doesn't do injection on the HD2870 whether this is enabled or not) all video ports work on both cards.  I'll post my clover config if it's necessary. The only kexts I have (installed on the EFI partition) are the latest FakeSMC and RealtekRTL8111.

 

Are my cards just not powerful to drive one monitor each at 2560x1440?  Is a little bit of choppiness and screen tearing expected?

 

Without any guidance as to whether it will fix the issue or not, I ordered a new XFX AMD Radeon R9 280.  I'll post an update once I get it installed.

Link to comment
Share on other sites

Well, I think I found a possible answer--my graphics cards don't support Apple's Metal, and it looks like they've converted all their GUI stuff over to it.  I don't know if it should cause the kind of slowdown I'm experiencing, but it seems like a good avenue of investigation.

 

The Radeon R9 280 I've ordered has openGL 4.5 support (apparently Metal works with cards that have at least 4.3), so it should have support for metal.  I'll update this with how it impacts my performance.

Link to comment
Share on other sites

My XFX R9 280x arrived yesterday.  While this isn't really a solution to the problem since I ended up having to buy new hardware, I decided to post it anyway.  Too many of these threads just go silent without any updates as to what ultimately happened with the OP's rig.

 

The exact model is R9-280X-TDFD.  Had some initial trouble getting it to work--apparently XFX's version of this card isn't very compatible with OSX.  I saw a bunch of posts and reviews that warned me of this before I bought it, and recommended I get Asus's version of this same card. Even though I was told it would have worked OOTB, it was $120 more expensive, and I'm not rich, so I just stumbled along with the XFX.  To get it working, I had to set clover to load an Asus vbios for it.  I'm amazed that such a thing is even possible-- the guys behind Clover thought of damn near everything!

 

This post set me on the right track to getting it fixed.  Apparently the green background for some posts on this site means "SUPER USEFUL--PAY ATTENTION".

http://www.insanelymac.com/forum/topic/303488-problem-with-xfx-radeon-r9-280x-dd-and-uefi-bios/?p=2096726

 

I downloaded the latest Asus vbios from techpowerup: 

http://www.techpowerup.com/vgabios/index.php?architecture=ATI&manufacturer=Asus&model=R9+280X&interface=&memType=&memSize=

 

Then followed this part of the manpage for Clover to load the external vbios:

http://clover-wiki.zetam.org/Configuration/Graphics#graphics_loadvbios

 

I renamed the downloaded VBIOS, putting it on my ESP under EFI/CLOVER/ROM/1002_6798.rom .  Afterwards it worked without a hitch.

 

I'll try going back to my HD6870s some time, to see if I can solve the issue with the low frame rate, but I suspect that it's just because they didn't support Metal.  My basis for thinking that is that in the kernel log, there used to be two lines (one if only one GPU was plugged in) that said that GPU Hardware VM was DISABLED--now I get only one line that says it's ENABLED.  I kind of suspect this indicates (lack of)support for Metal.

 

Thanks for making these resources available.

Link to comment
Share on other sites

 Share

×
×
  • Create New...