Jump to content
Cyberdevs

nVidia GPUs and the infamous lag issue, Why is that happening?

131 posts in this topic

Recommended Posts

9 minutes ago, TheBloke said:

OK fair enough.  I'll give it a go when I have some time to get the case open, probably tomorrow.

My 7970 is detected natively by macOS so I don't need anything to boot - although I do use WEG because without it, sleep/resume was broken in 10.13.3 and in 10.13.4 beta I occasionally fail to reach the login screen ('white screen on boot') which WEG seems to fix.

Unfortunately I can no longer test it easily on 10.13.3, it will have to be 10.13.4 as I upgraded my backup SSD to .4 last night and my main SSD today.  So I won't be able to confirm if there's any difference between those versions.

Cool. Thank you. And that's fine. I plan to update to 10.13.4 once it is released anyway, so if it's better than I expect, that's great! :)

Share this post


Link to post
Share on other sites
Advertisement
Posted (edited)
On 14/03/2018 at 12:26 AM, ReddestDream said:

Cool. Thank you. And that's fine. I plan to update to 10.13.4 once it is released anyway, so if it's better than I expect, that's great! :)

OK, initial tests complete.  Result: success! :)  At least for the goal of having the NV installed idle in parallel to the AMD.

PkaEKcp.png

fvsgd2rm.png

As you can see I am using the NVidiaWeb drivers and the NVidia card is fully recognised.  This is a requirement, at least in my setup.  I have not tried any tricks related to hiding the NV GPU, as I did not need to do so to get things working.

Here's the full details:

Setup:
OS: 10.13.4 Beta 5
System: X58 mobo, MacPro 5.1, Legacy Boot.
AMD GPU:  Asus Matrix Platinum Radeon 7970 3GB, 2xDVI + 4xDP  (Tahiti XT) - identical to a R9 280X, I believe
NV GPU: MSI 980 Ti 6GB (Maxwell)
AMD graphical config:  The following tests use no Clover AMD GPU config - which is how I get the best results with my Asus 7970.  All tests were performed both with and without WEG with no immediately noticeable difference.  Since upgrading to 10.13.4 I haven't seemed to need WEG any more (in 10.13.3 I couldn't wake without it.)

Test 1:
BIOS first GPU:  AMD
NVidia drivers: No
AMD monitors: At boot all monitors get signal, only two get picture (my usual situation).  Should be resolved by sleep/wake.
NV monitors: One connected works in VESA mode.
Result:    Boots OK.  Sleeps OK.  Does not wake from sleep.  Not usable for me; might be for someone who doesn't need to sleep/wake and doesn't care about sleep.

Test 2:
BIOS first GPU:  NVidia
NVidia drivers: No
AMD monitors: At boot all monitors get signal and picture (an improvement on my normal situation)
NV monitors: One connected works in VESA mode.  Even if one is not connected, there is a permanent extra 800x600 display in Displays Arrangement.  This can be disabled using SwitchResX, to avoid the mouse pointer straying onto it.
Result:    Boots OK.  Won't sleep - monitors go off, but computer does not.  A single mouse click then brings monitors back online.  Usable if you don't care about sleep.

Test 3:
BIOS first GPU:  NVidia
NVidia drivers: Yes, NVidiaWeb 161
AMD monitors: All monitors get signal and picture from boot (an improvement on my normal situation)
NV monitors: Connected monitors work only at Login screen.  Connecting one after login causes WindowServer to crash every time.
Result:    Boots OK.  Sleeps and wakes OK.  Mostly usable - except you can only see BIOS/boot process if you temporarily connect a monitor to NV, which must be removed before attempting Login else it's impossible to stay logged in.

Test 4:
BIOS first GPU:  AMD
NVidia drivers: Yes, NVidiaWeb 161
AMD monitors: All monitors get signal, only two get picture (my usual situation).  Resolved by sleep/wake.
NV monitors: Connected monitors work only at Login screen.  Try to login with one connected, or connecting one after login, causes WindowServer to crash immediately, booting you back to the login screen.
Result:    Boots OK.  Sleeps and wakes OK.  Completely usable.

Tests 5 & 6:
As per Tests 3 & 4, except using an NVidia 760 with macOS Native drivers instead of Web.
Results are identical to Tests 3 & 4 - it works, but is still not possible to use monitors connected to the NV GPU.
There was also a noticeable performance slowdown when booting with AMD with secondary NVidia 760 installed, including a long delay before Login screen appeared.   However this is likely not a concern even if it persists, because one could just use NVidiaWeb drivers instead.

Performance:
I did GeekBench 4 benchmarks in each of the above four tests, and confirmed that the AMD GPU and NVidia GPU (when it had drivers) performed at expected levels.  So there doesn't seem to be any performance hit to the AMD resulting from the NVidia being installed.  Now I'm fully using the UI, I again can't notice any difference to before the NV was installed.  UI animations seem to be the same - which is to say they're not great since I upgraded to 10.13.4, despite using AMD.  But they're no worse than without the NV installed, so far as I can tell anyway.  Videos are being properly accelerated etc.

Conclusion:
For @ReddestDream's purpose of having an idle NVidia GPU in the system for easy use of Windows, while only using AMD in macOS, this is a success.  It is not a success for anyone who hoped to use a dual AMD+NVidia setup for adding extra monitors. 

My final thought is that I can't say for certain this works with other AMD GPUs - mine is natively detected and works without any kind of Clover config or WEG, except I have to do a sleep&wake to get a picture from all six connectors.  I guess there's a chance things could differ with other cards that do need special Clover config to even function.  But hopefully not.

Edited by TheBloke

Share this post


Link to post
Share on other sites
Posted (edited)
1 hour ago, TheBloke said:

OK, initial tests complete.  Result: success! :)  At least for the goal of having the NV installed idle in parallel to the AMD.

PkaEKcp.png

fvsgd2rm.png

As you can see I am using the NVidiaWeb drivers and the NVidia card is fully recognised.  This is a requirement, at least in my setup.  I have not tried any tricks related to hiding the NV GPU, as I did not need to do so to get things working.

Here's the full details:

Setup:

OS: 10.13.4 Beta 5

System: X58 mobo, MacPro 5.1, Legacy Boot.

AMD GPU:  Asus Matrix Platinum Radeon 7970 3GB, 2xDVI + 4xDP  (Tahiti)

NV GPU: MSI 980 Ti 6GB (Maxwell)

AMD graphical config:  The following tests use no Clover AMD GPU config - which is how I get the best results with my Asus 7970.  All tests were performed both with and without WEG with no immediately noticeable difference.  Since upgrading to 10.13.4 I haven't seemed to need WEG any more (in 10.13.3 I couldn't wake without it.)

Test 1:

BIOS first GPU:  AMD

NVidia drivers: No

AMD monitors: At boot all monitors get signal, only two get picture (my usual situation).  Should be resolved by sleep/wake.

NV monitors: One connected works in VESA mode.

Result:    Boots OK.  Sleeps OK.  Does not wake from sleep.  Not usable for me; might be for someone who doesn't need to sleep/wake and doesn't care about sleep.

Test 2:

BIOS first GPU:  NVidia

NVidia drivers: No

AMD monitors: At boot all monitors get signal and picture (an improvement on my normal situation)

NV monitors: One connected works in VESA mode.  Even if one is not connected, there is a permanent extra 800x600 display in Displays Arrangement.  This can be disabled using SwitchResX, to avoid the mouse pointer straying onto it.

Result:    Boots OK.  Won't sleep - monitors go off, but computer does not.  A single mouse click then brings monitors back online.  Usable if you don't care about sleep.

Test 3:

BIOS first GPU:  NVidia

NVidia drivers: Yes, NVidiaWeb 161

AMD monitors: All monitors get signal and picture from boot (an improvement on my normal situation)

NV monitors: Connected monitors work only at Login screen.  Connecting one after login causes WindowServer to crash every time.

Result:    Boots OK.  Sleeps and wakes OK.  Mostly usable - except you can only see BIOS/boot process if you temporarily connect a monitor to NV, which must be removed before attempting Login else it's impossible to stay logged in.

Test 4:

BIOS first GPU:  AMD

NVidia drivers: Yes, NVidiaWeb 161

AMD monitors: All monitors get signal, only two get picture (my usual situation).  Resolved by sleep/wake.

NV monitors: Connected monitors work only at Login screen.  Try to login with one connected, or connecting one after login, causes WindowServer to crash immediately, booting you back to the login screen.

Result:    Boots OK.  Sleeps and wakes OK.  Completely usable - except I have lost OOB HDMI audio on the AMD cardI never had this working in 10.13.3, but 10.13.4 added it for me OOB.  I assume having the NV installed is causing some conflict that prevents it from loading.  Personally I don't use it as I have a USB soundcard.

Performance:

I did GeekBench 4 benchmarks in each of the above four tests, and confirmed that the AMD GPU and NVidia GPU (when it had drivers) performed at expected levels.  So there doesn't seem to be any performance hit to the AMD resulting from the NVidia being installed.  Now I'm fully using the UI, I again can't notice any difference to before the NV was installed.  UI animations seem to be the same - which is to say they're not great since I upgraded to 10.13.4, despite using AMD.  But they're no worse than without the NV installed, so far as I can tell anyway.  Videos are being properly accelerated etc.

Conclusion:

For @ReddestDream's purpose of having an idle NVidia GPU in the system for easy use of Windows, while only using AMD in macOS, this is a success.  It is not a success for anyone who hoped to use a dual AMD+NVidia setup for adding extra monitors.  Also, the loss of HDMI audio might be a problem for some - though this probably varies with AMD GPU type, and I have tried no methods to get it back.  As mentioned, I never had it at all before I upgraded to the 10.13.4 beta at which point it just started working.  But it's gone while the NV GPU is installed.  Maybe HDMIAudio.kext or similar method would bring it back. Untested.

My final thought is that I can't say for certain this works with other AMD GPUs - mine is natively detected and works without any kind of Clover config or WEG, except I have to do a sleep&wake to get a picture from all six connectors.  I guess there's a chance things could differ with other cards that do need special Clover config to even function.  But hopefully not.

Awesome! Thanks for the info! Looks like 10.13.4 has improved things! :)

Would be cool tho if someone could confirm this on UEFI and with an iMac SMBIOS (maybe 18,3 like mine) tho . . .

The cards I'd hope to pair are my 1080ti in the top slot and RX 480 in the bottom in my Z270, 7700K build. But I'd rather that Nvidia just fix the drivers because it's unnecessary heat generated and power drawn. But it would be nice to at least have the option if the Nvidia drivers don't get fixed . . .

Edited by ReddestDream

Share this post


Link to post
Share on other sites
Posted (edited)

One final update:
After removing the 980Ti I did a brief test using my NVidia 760 instead, so that I could test with the Native drivers.

Everything was functionally identical to Test 3 and Test 4 above - ie it works both with NV and AMD as first GPU, but it's not possible to use both GPUs for extra connections as any monitor connected to the NV causes an instant WindowsServer crash.  There was also a seeming performance issue when the AMD was first GPU: it took an age to reach the login screen, and the UI seemed particularly slow once I did login.  This problem did not repeat when NV was first GPU.  I did not test it for more than one reboot so cannot say if it's a permanent problem. 

In any case this shouldn't be a problem, both because one could simply use NVidiaWeb drivers instead, and because it's unlikely someone will be keeping an idle secondary GPU that can use Native drivers, as it'd have to be pretty old and thus not really worth keeping for Windows.

Also, a correction regarding HDMI/DP Audio:  I've just booted with only my AMD and I still don't have working HDMI/DP audio.  I definitely had it working when I first upgraded to the 10.13.4 beta, so I'm not sure what's changed, but it's seemingly not related to the addition of an NV GPU.

Edited by TheBloke

Share this post


Link to post
Share on other sites
Posted (edited)
New [mention=1135927]vit9696[/mention] and [mention=631247]lvs1974[/mention] , since I switched to AMD can you guys confirm that please? And thanks to [mention=1928682]nikitenich[/mention] for reporting it.

See [mention=1135927]vit9696[/mention] & [mention=631247]lvs1974[/mention]

 

Nvidia lag fixed with new NvidiaGraphicsFixUp.kext great work[mention=1135927]vit9696[/mention] & @lvs1974

 

On 10.13.4

GTX960

Official Nvidia drivers for 10.13.4

NvidiaGraphicsFixup.kext.zip

 

Edited by SavageAUS
Added .zip

Share this post


Link to post
Share on other sites
Did you used any particular boot argument?
Nope just replaced old kext with new (EFI) and rebooted.

Sent from my SM-G930F using Tapatalk Pro

Share this post


Link to post
Share on other sites

Ok then. I've tested now 1.2.5 and even for me with Pascal and Haswell system interface seems more snappy. May be placebo but it works!

Share this post


Link to post
Share on other sites

I just replaced old kext with this new one and even WebGL Water works quite better. Still using 104 drivers.

Responsiveness is better in general.

Cinebench benchmark did get better results too vs old version.

Has someone tested with the latest drivers from Nvidia for 10.13.4 ?

Share this post


Link to post
Share on other sites
I just replaced old kext with this new one and even WebGL Water works quite better. Still using 104 drivers.
Responsiveness is better in general.
Cinebench benchmark did get better results too vs old version.
Has someone tested with the latest drivers from Nvidia for 10.13.4 ?
I am using the latest drivers without issues with latest NvidiaGraphicsFixUp.

Sent from my SM-G930F using Tapatalk Pro

Share this post


Link to post
Share on other sites

This is an important boot argument to avoid kernel panics or other incompatibility issues.

ngfxcompat=1 boot argument (and force-compat property) to ignore compatibility check in NVDAStartupWeb

 

Share this post


Link to post
Share on other sites
Posted (edited)

So what was wrong with those later nvidia drivers? I know it lagged, but why did it lag, what was changed in its functionality compared with older drivers?  I'm on gtx 960 and skylake, so I too experienced that lag and was using older drivers to avoid it.

Edited by pcpaul

Share this post


Link to post
Share on other sites
7 hours ago, SavageAUS said:

I am using the latest drivers without issues with latest NvidiaGraphicsFixUp.

Sent from my SM-G930F using Tapatalk Pro
 

Updated to latest version NVIDIA Web Driver .30.103 with latest Lilu 1.2.2 and the very minimal lag I experienced with .104 drivers (with latest NvidiaGraphicsFixUp) disappeared. 0 LAG.

 

Share this post


Link to post
Share on other sites
Posted (edited)

Could someone compile latest nvidiagraphicsfixup with new commits? I dont have xcode installed and im on a slow connection now.

Thanks.

021e0d26d9.png

Edited by Kynyo

Share this post


Link to post
Share on other sites
Posted (edited)
2 minutes ago, SavageAUS said:

Thats IntelGraphicsFixUp......

Woops! my bad thanks for the correction! I removed the post :blush:

Edited by Cyberdevs

Share this post


Link to post
Share on other sites

Many people are reporting that the latest driver for 10.13.4 (i.e. 387.10.10.10.30.106) solves the lag problems, so it'll probably be worth testing with all other hacks (e.g. NvidiaGraphicsFixup) removed.

Share this post


Link to post
Share on other sites

I built NvidiaGraphicsFixUp.kext 1.2.7 (doesn't have lag fix in it) from source and can confirm no more lag with 387.10.10.10.30.106 on 10.13.5 beta 2.

 

Sent from my SM-G930F using Tapatalk

 

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By rioredstone
      if a web driver is NOT installed, what happens??
       
      I used AMD RX560 in Sierra, but it is very unstable. usually gpu crash or window server crash occurred.
      so now I attached nvidea Quadro FX1700 to my Sierra. I know FX1700 works well in High Sierra, but I haven't tried it in Mojave yet.
      FX1700 works well without any additional kext, even nvidia web driver.
       
      I plan to buy a nividia card. I would like to know if a nvidia card, especially kepler, maxwell, pascal, works without web driver.
      just curious.
       
       
    • By arsradu
      Hi guys,
       
      So, this little tutorial is meant to help people fix a new issue with Mojave: opening jpg files (looks like it happens with larger files, not so much with smaller ones) using Quick Look (on spacebar key pressed) or Preview app using the dedicated GPUs.
      The issue is that, when trying to open jpg files (for some reason, it doesn't occur with pngs), the pop-up window would remain in an endless loop. And from that point forward, any other app trying to open the same file, will either become unresponsive (in the case of the Preview app) or just stay in endless loop (in case of Quick Look)
       
      As a workaround, in case the tutorial below doesn't work for you, you can use Grab (built-in app in MacOS) to open said files.
       
      This issues DOES NOT occur using the iGPU. So...if you're comfortable using the iGPU, just switch to that and you should be good to go. You don't need this tutorial.
       
      This tutorial is based on @Cyberdevs' research and testing on this topic (especially useful if you're using an RX series AMD video card), and my own very limited time testing this on my rig. I just thought it would be useful to create a new thread for it so that people can discuss this particular issue here.

       
      With that being said, I'll just move on to the actual tutorial.
       
      New (probably better) method.
       
      Switch your SMBIOS in Clover config in regards to the dedicated GPU you're using, instead of the CPU. Take a look here and choose the corresponding SMBIOS closest to your hardware.
      Yeah, that's it.
       
      In case you lose CPU PM with this method, there are multiple ways to fix that, and they do not make the object of this thread.  It worked perfectly fine for me though and I didn't need to change anything else.
       
      A simple Lilu plugin
       
      Thanks to vulgo for the plugin and @Matgen84 for sharing and testing it, we now have yet another possible solution to this issue. It's a Lilu plugin (which means that it requires Lilu.kext in order to work) it's called NoVPAJpeg, and it can be downloaded from here.
      You use it as a regular kext, alongside Lilu. I prefer (and recommend) using it within the EFI folder, in Clover/kexts/Other. But if you want to use it in S/L/E, that should work just fine.
       
      More info can be found in this post here.
       
      In case you wanna try alternative medicine  ...
       
      The main thing we need to do is actually very simple: we need to enable the iGPU (integrated GPU) by default, in BIOS, while actually being connected to the dedicated GPU.
       
      For ATI GPUs (curtesy of @Cyberdevs' post here).
       
      The discreet GPU should be set as primary in BIOS and your displays should be connected to your discreet GPU
      The iGD/iGPU/iGFX must be enabled in BIOS/UEFI as the secondary GPU.
       
      I removed the DSDT Reconfigured the config.plist to and removed some flags which weren't needed because of the DSDT added the InjectATI + Ornioco Framebuffer (I removed the Orinoco framebuffer because of some weird glitches but it might be useful for other AMD GPUs if you inject the correct framebuffer according to your GPU. No need to inject anything for nVidia GPUs unless your GPU needs it) Added the InjectIntel + ig-platform-id for my intel HD530 (for intel HD 530 I use the 0x19120001 ig-platform-id)  
      Steps 5 to 7 might not be necessary I just did them anyway, if anyone succeeded to get quicklook working without those steps let me know so I can exclude those steps.

           Also confirmed to work with AMD R9 270X on a SandyBridge rig (without an iGPU) using WhateverGreen + Lilu kexts, which also helped to solve the transparency issue along with the Quick Look problem, it also resolved the buggy Screen Capture (Command+Shift+5) issue as well. 
       
          Also, do:
      nvram cleanup kextcache & prelinked kernel rebuild reboot  More info on that here.
       
       
      For NVIDIA GPUs
       
      This is what I needed for my NVIDIA rig and the MSI motherboard in the signature. Your milage may vary, depending on your hardware. But, the idea should be the same regardless.
       
         For MSi motherboads (check out my motherboard details in the signature)
       
      Set your BIOS to use PEG (dedicated GPU) so you can boot.
      Since you're reading this, chances are that you're already connected to the dedicated GPU and the BIOS is set to PEG. So just go into BIOS and see if you're using the iGPU or the dedicated (PEG) graphics device by default.
      If you're already using this, skip to Step 3 (the part AFTER Reboot). Reboot (I think you don't necessarily need to boot into the OS...but you do need to reboot at least until Clover UI) Reboot back into BIOS and set it from PEG to IGD (integrated graphics) WITHOUT removing the cable. Save Reboot again.  
         The result should be that the OS is tricked into thinking you're booting with the IGPU when in fact you're using the dedicated GPU.
       
         For Gigabyte motherboards
       
         Set:
      Peripherals -> Initial Display Output -> iGFX Chipset -> Internal Graphics -> Enabled
           DVMT Pre-Allocation -> default 64M.
           DVMT Total Gfx Mem -> default 256M Save Reboot  
         You should do this with the cable connected to the dedicated GPU.
       
      You will also need to patch the iGPU from Clover config.
      1. Graphics -> Inject Intel (UNCHECK Inject Nvidia or ATI if it's checked).
      2. ig-platform-id (in my case for Intel HD 4600 Desktop) it was: 0x0d220003
       
      And use IntelGraphicsFixup.kext (now included into WhateverGreen.kext) in Clover/kexts/Other. In my particular case, without the kext, I would get freezes in Safari.
       
      This might be a bug with Mojave and it could be fixed by Apple in the future. but in the meantime, feel free to use this if it helps you fix the issue.
       
      For HP motherboards (including laptops), so far no solution, unless the BIOS somehow allows to switch from eGPU to iGPU and vice-versa.
       
      Cheers!
×