Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
1 contributor

Users who have contributed to this file

91 lines (77 sloc) 6.25 KB
  • What are the system requirements?
    while there are no particular limitations, this FAQ does not include the specific information regarding GPUs before Kepler (i.e. older than 6xx series).
    In general it appears to be less convenient to use CPUs newer than Ivy and Haswell with NVIDIA GPUs.
    For GPUs newer than Kepler (e.g. Maxwell or Pascal) you need NVIDIA Web Driver. Use nv_disable=1 boot argument to install it.

  • What is the general idea?
    If you have builtin Intel GPU, make sure to rename it to IGPU and enable with connector-less frame first. Then choose a most suitable mac model and install NvidiaGraphicsFixup. To get hardware video decoding you are likely to need Shiki, please read its FAQ carefully to get a good understanding.

  • How to properly choose a mac model? If you have Ivy Bridge or Haswell CPU you should go with iMac13,2 or iMac14,2. Otherwise choose the model you prefer, but keep this in mind:

    • If you have Intel GPU, especially if Ivy Bridge or newer, choose the model (by board-id) that has forceOfflineRenderer set to YES (true) in /System/Library/PrivateFrameworks/AppleGVA.framework/Versions/A/Info.plist.
    • Models other than iMac13,2 and iMac14,2 require patches, which are though normally automated in NvidiaGraphicsFixup (see below)
    • CPUs newer than Haswell require Shiki patches for hardware video decoding (see below).
  • Why should I use Intel GPU with a connector-less frame?
    Nvidia GPUs newer than 2xx do not implement hardware video decoder in macOS, also starting with 10.13 dual-GPU setups often cause a bootloop. If you absolutely need your IGPU with connector-full frame you will have to use IntelGraphicsFixup and most likely Shiki with shikigva=1 OR a model without forceOfflineRenderer.

  • How to use Intel GPU with a connector-less frame?
    Please refer to Shiki FAQ for full details. You could use SSDT to rename GFX0 to IGPU by creating a proper IGPU device and setting STA of the existing one to Zero:

Scope (GFX0) {
  Name (_STA, Zero)  // _STA: Status
}
  • What patches do I need for mac models other than iMac13,2 and iMac14,2?
    AppleGraphicsDisplayPolicy.kext contains a check against its Info.plist and determines which mode should be used for a specific board-id. It is dependent on the GPU which mode is suitable and is normally determined experimentally. NvidiaGraphicsFixup contains several ways to configure to set power management modes:

    • kext patch enforcing none into ConfigMap dictionary for system board-id (agdpmod=cfgmap)
    • kext patch disabling string comparison (agdpmod=vit9696, enabled by default)
    • kext patch replacing board-id with board-ix (agdpmod=pikera)
  • What patches do I need for Maxwell or Pascal GPUs?
    Maxwell GPUs (normally 9xx and some 7xx) no longer supply a correct IOVARendererID to enable hardware video decoder. See more details: here. You no longer need any changes (e.g. iMac.kext) but NvidiaGraphicsFixup. This fix was added in 1.2.0 branch. Can be switched off by using boot-arg "-ngfxnovarenderer".

  • What patches do processors newer than Haswell need?
    Apple limits hardware video decoder with NVIDIA to only Haswell and earlier. To get hardware accelerated video decoding you need to patch AppleGVA.framework. To do so you could use Shiki with shikigva=4 boot argument. On 10.13 you may currently use a temporary workaround that enables hardware video decoding only for a subset of processes via shikigva=12 boot argument.

  • What patches do Pascal GPUs need on 10.12?
    On 10.12 and possibly on 10.13 Pascal GPUs need a team id unlock to avoid glitches like empty transparent windows and so on. This patch is already present in NvidiaGraphicsFixup, and the use of any other kext (e.g. NVWebDriverLibValFix.kext) is not needed. Can be switched off by using boot-arg "-ngfxlibvalfix".

  • How can I enable digital (HDMI audio)?
    NvidiaGraphicsFixup will do it itself but you must esnure that you do not have any conflicting "fixes" from Clover, SSDT patches, Arbitrary and so on (e.g. FixDisplay, AddHDMI, etc.). NvidiaGraphicsFixup also renames GPU devices to GFX0 and HDAU and injects audio connectors @0,connector-type - @5,connector-type. Injection can be switched off by using boot-arg "-ngfxnoaudio" or more specific "-ngfxnoaudiocon". You can also use ioreg properties in GPU to disable respective injections: "no-audio-autofix" or "no-audio-fixconn".

  • How can I partially fix Apple Logo during boot?
    Inject @X,AAPL,boot-display GFX0 property with the main screen index instead of X, the value does not matter.

  • Does NvidiaGraphicsFixup fix visual issues on wakeup with Pascal GPUs?
    Not at the moment. It is also known that HDMI audio may not always work with Pascal GPUs.

  • HDMI audio device only visible after rescan Jamie found out through linux that nvidia graphics on laptops gtx 1060/1070 specifically, that the audio device is disabled by default. Bug description. He discovered that when the 0x488 magic bit is not set, the gfx device advertises as non-multifunction. After the bit is set, the device advertises as multi-function. So, after setting the magic bit, removing the device will cause Linux to re-probe it during the next rescan taking note at that point that it is a multi-function device on linux theres a fix use: setpci -s 01:00.0 0x488.l=0x2000000:0x2000000" on mac os he added:

Device (PEG0)
{
	Name (_ADR, 0x00010000)  // _ADR: Address
	Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
	{
		** Store (One, ^GFX0.NHDA)**
		If (PICM)
		{
		    Return (AR01)
		}

	    Return (PR01)
	}
}

NHDA is declared here:

Scope (_SB.PCI0.PEG0)
{
	Device (GFX0)
	{
		Name (HDAU, Zero)
		OperationRegion (PCI2, SystemMemory, 0xE0100000, 0x0500)
		Field (PCI2, DWordAcc, Lock, Preserve)
		{
			Offset (0x48B),
			,   1,
			NHDA,   1
		}
You can’t perform that action at this time.