I've tried this and didn't get any different result so I suspect it's not really important if you're not hot-plugging eGPUs (which I don't think works anyways). The logic seems simple enough: extend AppleGraphicsDeviceControl and implement a couple of methods which return some vendor specific information. I'm not sure if this is needed or not, but in High Sierra, there is this new IOResource called AppleGPUWrangler that acts like IODisplayWrangler (which handles display plugging/unplugging and stuff) but for GPUs.
#NVIDIA WEB DRIVERS HIGH SIERRA DRIVER#
If you have to fix NVIDIA Web Driver version WebDriver-387. Ive also tried several other installations are running. Ive just invested in a lovely Mac Pro 2008 and got it up and running with High Sierra 10.13.4. This step is not necessary for any Genuine Macs. Click button to download high-sierra-nvidia-web-driver.exe. Weve got up to date version of High sierra nvidia web driver. You should configure Clover or Chameleon to make Nvidia web driver to function correctly in Hackintosh/Macintosh. Select Windows Version: Windows 10 Windows 8 Windows 7 Windows Vista Windows XP Auto Detect.
#NVIDIA WEB DRIVERS HIGH SIERRA INSTALL#
In this case, I copy-pasted the personality from NVDAStartupWeb.kext and added the IOPCITunnelCompatible key locally but pointed the CFBundleIdentifier to NVIDIA's bundle. 13 17A405 Download, Sierra Patcher Tool for beta 10. Nvidia MacOS Driver Installer automatically tries to install the correct version of web-driver aka Nvidia Alternative Driver for your macOS. Instead, I use a little known feature of IOKit which is exporting a personality implemented in another kext. But that breaks the signature and also won't survive updates so it seems like too hacky of a solution to me. The old way of doing this is to modify the ist of the relevant driver. I suspect this logic was used to fix some AMD specific race condition with eGPU attachment that is not applicable to NVIDIA drivers (the setup order is different). It is not immediately obvious if this causes any problems, and more research is needed here. Both extend from IOFramebuffer and therefore needs to have the attach() method patched. NVDA is used to attach a driver to each nub. IONDRVFramebuffer is used to set up a IOKit nub for each display port. The "fix" here is to bypass this check and we need to do it in two places. However, NVIDIA's drivers wait for the framebuffer to be set up first before setting up the controller, so there is a resource wait deadlock. The idea here is that the framebuffer should wait for the graphics controller to be set up first. If (descendant-> metaCast( "AppleGraphicsDeviceControl ")) While ((descendant = OSDynamicCast(IORegistryEntry, descendantIter-> getNextObject()))) Pci, gIOServicePlane, kIORegistryIterateRecursively)
OSIterator *descendantIter = IORegistryIterator::iterateOver( While (( NULL = OSDynamicCast(IOPCIDevice, pci)) & KIORegistryIterateRecursively | kIORegistryIterateParents)) Bool IOFramebuffer::attach(IOService *provider)īool tunnelled = ( NULL != provider-> getProperty( kIOPCITunnelledKey, gIOServicePlane,