# 禁用 GPU
所以你需要隐藏你的不支持GPU吗?使用OpenCore,事情略有不同,特别是我们需要指定我们想要欺骗的确切设备。有三种方法可以做到这一点:
- 引导标志
- 禁用除iGPU外的所有gpu
- DeviceProperties
- 在每个插槽的基础上禁用GPU
- SSDT
- 在每个插槽的基础上禁用GPU
CSM必须在BIOS中关闭,才能使欺骗正常工作,特别是在基于AMD CPU的系统上。
# 引导标志
到目前为止最简单的方法,你所需要做的就是添加以下引导参数:
-wegnoegpu
请注意,这将禁用除iGPU之外的所有gpu。
# DeviceProperties 方法
这里很简单,用gfxutil (opens new window) 找到PCI路由,然后用你的spoof创建一个新的DeviceProperties部分:
path/to/gfxutil -f GFX0
输出结果类似:
DevicePath = PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
导航到Root -> DeviceProperties -> Add
并使用以下属性添加您的PCI路由:
Key | Type | Value |
---|---|---|
disable-gpu | Boolean | True |
# SSDT 方法
有许多方法可以找到路径,但通常最简单的方法是进入windows下的设备管理器并找到PCI路径。
\_SB.PCI0.PEG0.PEGP
的设备路径示例:
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "spoof", 0x00000000)
{
External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
Method (_SB.PCI0.PEG0.PEGP._DSM, 4, NotSerialized)
{
If ((!Arg2 || !(_OSI ("Darwin"))))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x0A)
{
"name",
Buffer (0x09)
{
"#display"
},
"IOName",
"#display",
"class-code",
Buffer (0x04)
{
0xFF, 0xFF, 0xFF, 0xFF
},
})
}
}
可以在这里找到该SSDT的副本:Spoof-SSDT.dsl (opens new window). 你需要MaciASL (opens new window) 来编译。记住, .aml
是已编译的,而 .dsl
是源代码。您可以通过选择File -> Save As -> ACPI Machine Language,使用MaciASL进行编译。
来源:CorpNewt
# Windows GPU选择
根据你的设置,你可能会发现Windows渲染游戏或应用程序使用了不需要的GPU。
许多用户只有两个gpu。NVIDIA和Intel HD/UHD IGPU。由于NVIDIA不再在macOS上工作,为了方便,他们可能有显示器插入主板的HDMI/DP连接。因此,Windows将通过IGPU渲染所有的游戏和应用程序。您可以通过以下方式将特定的游戏或应用程序重路由到不同的GPU:设置>系统>显示>图形设置
渲染后的游戏或应用程序将其缓冲区复制到IGPU。然后显示给你看。这也有一些缺点:
- GSync将不再工作。
- NVIDIA设置不能再打开。这需要显示器与GPU连接
- 降低帧速率。
- 增加输入延迟。
- 刷新率上限。
如果你的主板只有一个用于iGPU的HDMI连接器,规格2.1的最大刷新率是120Hz (opens new window). 这假设您的主板和显示器具有相同的规格。这意味着您的144Hz显示器仅看到硬件决定的最大120Hz。如果你的板上有IGPU的DP连接器,这个限制不适用。
如果您有两个以上的gpu (AMD、NVIDIA和Intel),则此设置将受到限制。显示器连接到AMD GPU意味着Windows将只允许您选择AMD GPU或Intel IGPU。NVIDIA GPU将不显示。在Windows的未来版本中,将删除此限制 (opens new window).
作为建议,如果你使用两种操作系统,并且不希望有任何缺点,你最好的选择是HDMI或DP开关。