WhateverGreen核显驱动详解

您所在的位置:网站首页 10代核显黑苹果4K掉帧 WhateverGreen核显驱动详解

WhateverGreen核显驱动详解

2023-08-09 07:06| 来源: 网络整理| 查看: 265

参考文档:

远景·英特尔全系核显显卡驱动教程 WhateverGreen文档·Intel® HD Graphics FAQs Dortania's Intel iGPU Patching

早期黑苹果通常直接使用 Clover 补丁注入显卡,然而这种方法从10.14版本以来便不再受到支持,稳定且长期支持的方案还是要选择 WhateverGreen。作为高集成度的显卡驱动,目前集成了 WhateverGreen,IntelGraphicsFixup,NvidiaGraphicsFixup,Shiki 和 CoreDisplayFixup,支持 AMD/ATI/Intel/Nvidia (N卡需要使用 WebDriver,且最高支持到10.13.6;开普勒架构大部分免驱)。本篇文章主要讨论核显驱动,内容可能会有一点冗长,确保你有足够的耐心进行阅读。︿( ̄︶ ̄)︿

macOS 对 HD 2000(Sandy Bridge 架构简称 SNB)系列及以上的核显提供相对完整的支持。如果独显能够正常驱动,必须配合核显驱动以及合适的缓冲帧(Framebuffer 简称 FB),才能实现硬件加速,这也成为了一台”完美“的黑苹果电脑的重要指标之一。这是原文博客地址

开始前要做的...

正确启用核显步骤:

1.修正设备的 ACPI 名称(核显是 IGPU,英特尔管理引擎是 IMEI)。事实上,这一步 WhateverGreen 会自动完成,必要的时候还需要在 ACPI -> Patch 中手动打替换补丁如 Rename GPU0 to IGPU,Rename PEGP to IGPU。

2.仿冒设备为合适的型号。

3.写入正确的 FB,即 AAPL,ig-platform-id(适用于 Ivy Bridge 或更新)或 AAPL,snb-platform-id (仅适用于 Sandy Bridge),是最为关键的步骤。

4.与核显相关设备会由 WhateverGreen 和 AppleALC 自动添加额外的属性。

BIOS 设置建议(图片来自WhateverGreen文档·Intel® HD Graphics FAQs):

01.png

将 DVMT 内存量设置为 MAX;如果BIOS中没有该选项(大多数笔记本不支持),之后会讲如何使用 framebuffer-stolenmem 给 BIOS 中 DVMT 添加内存大小。

开始之前需要做一下引导的清理工作,移除下列驱动:

IntelGraphicsFixup NvidiaGraphicsFixup CoreDisplayFixup Shiki IntelGraphicsDVMTFixup AzulPatcher4600 AppleBacklightFixup FakePCIID_Intel_HD_Graphics FakePCIID_Intel_HDMI_Audio FakePCIID.kext(不使用其他依赖于 FakePCIID 的插件时)

以下针对 Clover 用户:

关闭所有显卡注入参数 Graphics-Inject-ATI/Intel/NVidia Devices-Inject 全部设置为 false。并点掉以下 Clover 的 DSDT 补丁:

AddHDMI FixDisplay FixIntelGfx AddIMEI FixHDA AddPNLF

同时关闭 UseIntelHDMI,SetIntelBacklight 和 SetIntelMaxBacklight。删除 -disablegfxfirmware 和 -igfxnohdmi 启动参数。删除或注释 IntelGFX,IMEI 的 FakeID 和 ig-platform-id。清除以下位置所有和 IGPU,HDMI 相关的条目:

config.plist ▸ Devices ▸ Arbitrary config.plist ▸ Devices ▸ Properties config.plist ▸ Devices ▸ AddProperties

最后一步,清除 DSDT Patches:GFX0 to IGPU, PEGP to GFX0, HECI to IMEI, MEI to IMEI, HDAS to HDEF, B0D3 to HDAU。

案例:i5-10210u 1.获取设备路径

以 i5-10210u 的核显 Intel UHD Graphcis (应该是 UHD620 的一张马甲卡)为例子,首先需要找到核显的 Pci 设备路径。通常是 PciRoot(0x0)/Pci(0x2,0x0),但还是需要使用 gfx-util 进行确认。软件可在 acidanthera 团队维护的仓库里下载 release 版本,项目地址:https://github.com/acidanthera/gfxutil。终端输入如下命令:

> ./gfxutil | grep IGPU 00:02.0 8086:3e9b /PCI0@0/IGPU@2 = PciRoot(0x0)/Pci(0x2,0x0) 2.注入 Framebuffer 缓冲帧

config -> DeviceProperties -> Add 中添加一个 Dictionary 命名为你的核显路径。首先添加 Frambuffer,这是核显驱动中最核心的步骤。Dic 下添加 Data 类型的 AAPL,ig-platform-id 或 AAPL,snb-platform-id 子项指定 FB 值,请首先使用对应型号和架构的 recommanded 值,如果无法驱动可以依次尝试其他的。

在案例下方的内容中,我放出了从最初到10代 CFL/CML 核显的所有信息,大部分内容摘自WhateverGreen文档·Intel® HD Graphics FAQs,由于是10代 Comet Lake 我这里选择:

推荐的 Framebuffers:

Desktop: 0x3EA50000 (default) 0x3E9B0007 (recommended) Laptop: 0x3EA50009 (default). 1(启用) 00000000 -> 0(不启用)

NUMBER 数据:0(不启用) 1(启用)

另外可能需要以下补丁:

1.framebuffer-stolenmem,对应修改表格中的 STOLEN 值,对于高分辨率屏幕很重要,但也不应设置太高:

一般 1080P ,设置为 19 M 可以:00003001 2K 屏幕设置为64M:00000004 4K 尝试128M:00000008(本人没有尝试过 4K屏幕太贵)

以19M 的Stolen Memory为例,FBMEM 和 STOLEN具体的换算方式如下:

i. 兆字节转换为字节 19 x 1024 ^ 2 = 19922944 ii.十进制转换为十六进制(可使用 Hackintool 计算器) 19922944 -> 1300000 iii.从开头补0并补齐8个字符,再两两一组倒序排列 1300000 -> 01300000 -> 01 30 00 00 -> 00 00 30 01 -> 00003001

2.framebuffer-fbmem,对应修改表格中的 FBMEM 值:

一般屏幕设置成 9M 大小就好:00009000 高分屏的话最好直接设置成 48M:00000003

3.framebuffer-unifiedmem,对应修改表格中的 VRAM 值,除非重度强迫症,一般情况保持原生不建议修改。比如我原默认现存1536M,可以通过此补丁修改为 2048M:

2048M:00000080 3072M:000000C0

4.framebuffer-cursormem(Hasswell 平台专属,可能解决花屏问题):

一般屏幕设置成 9M 大小就好:00009000 高分屏的话最好直接设置成 48M:00000003

二.修复核显接口

按理说,第一部分的配置基本上可以正常工作了。但如果出现外界显示屏黑屏的情况,就需要定制核显接口了。

还是回到 3EA50009 的 Spoiler 信息,其中我们可以看到:

[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000098 - ConnectorLVDS [1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x000001C7 - ConnectorDP [2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x000001C7 - ConnectorDP 00000800 02000000 98000000 01050900 00040000 C7010000 02040A00 00040000 C7010000

显然易见,该缓冲帧有3个输出接口,一个 LVDS (通常是笔记本内建输出)两个 DP 输出。后三行的数值分别对应每一个 connector,如 con0 接口的完整信息是:

[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000098 - ConnectorLVDS 00000800 02000000 98000000

不妨让两位为1 Bit 那么:

Bit1 00。代表的是接口编号,以此类推有01 02

Bit2 00。代表的是 BusID,加上0x就对应了 ‘busId: 0x00’

Bit3-4 0800。指该 connector 对应的 pipe 编号

Bit5-8 02000000。此值表示接口的类型。从中可以得知 LVDS 接口对应着 02000000。同理。我们可以看到如下对应关系:

LVDS and eDP // 笔记本内建显示输出 VGA DisplayPort // DP 或 VGA DUMMY // 无物理接口时 HDMI S-Video // S端子输出,老古董了 DVI (Dual Link) // DVI老古董了 DVI (Single Link) 注意:VGA接口在10.8以及更新系统上使用 00040000 代替 10000000,10000000 在老版本系统上使用

这些都是理论知识储备,来验证一下是不是这样的?打开 IORegistryExplorer,搜索 IGPU 定位到核显位置,再点一下搜索框的叉叉以显示他下面的所有子项。我们可以看到 AppleIntelFramebuffer@0 AppleIntelFramebuffer@1 AppleIntelFramebuffer@2,分别对应 con0,con1 和 con2。

02.png

con0 已经被 LVDS 接口占用,这是如果要使用 HDMI 输出,则需要修改 con1 接口。

1.framebuffer-conN-enable(conN 接口是否启用补丁):

DATA 数据:01000000 -> 1(启用) 00000000 -> 0(不启用) NUMBER 数据:0(不启用) 1(启用)

2.framebuffer-conN-type,指定 conN 输出类型

3.framebuffer-conN-index(设置 conN 的索引值,会指定接口的优先级):这个按个人需要设置,如果需要屏蔽这个输出口,可以设置成 FFFFFFFF,也就是最大的数字,让它足够靠后,这样就达到了屏蔽效果!

4.framebuffer-conX-busid,指定 conN 的总线ID,BusID 可经过反复尝试获得最佳值并且个 BusID 最多只能有一个接口与之对应。

5.framebuffer-conX-alldata,替换接口的所有信息字节。

最后贴一张 i5 10210u 较完美的配置,H256 HEVC 编码都支持 4K 硬件加速。

03.png

结束了?还没呢,就是玩

1.HDMI 高分屏支持 60fps,需要添加 enable-hdmi20 属性,与 -cdfon 启动参数效果一致。

2.禁用独显可添加 disable-external-gpu,引导参数 -wegnoegpu 可达到同样的效果。但事实上如果是采用 AOAC模式 睡眠的新款笔记本独立显卡此时还在偷电,只是微乎其微,想要彻底屏蔽独显需要 SSDT-NDGP_OFF-AOAC.aml 补丁,具体参考 OC-little 这里不再展开。

3.WEG 还提供了二进制补丁,实际上根本用不到,其实我自己也没有研究过,补充一下:

framebuffer-patchN-enable (enabling patch number N)

framebuffer-patchN-framebufferid (the framebuffer that we're patching, the current by default)

framebuffer-patchN-find

framebuffer-patchN-replace

framebuffer-patchN-count (the amount of pattern iterations to search for, the default is 1)

Intel HD Graphics(Ironlake 一代远古版本)

按理说一代并不在驱动支持的范围之内,但还是有解决办法的,详见 Gurus 大神的帖子 https://www.insanelymac.com/forum/topic/286092-guide-1st-generation-intel-hd-graphics-qeci

注意:一代核显支持 Mac OS X 10.6.x 到 macOS 10.13.6,更高版本系统不支持。且只能使用 LVDS 显示屏。

原生支持的Dev ID: 0x0042 0x0046

Intel HD Graphics 2000/3000 (Sandy Bridge架构)

支持系统版本:Mac OS X 10.7.x to macOS 10.13.6

SNB FB 列表:

Framebuffer值 Type类型 Connectors输出接口数 TOTAL STOLEN Memory 0x00010000 mobile 4 32 MB 0x00020000 mobile 1 32 MB 0x00030010 desktop 3 32 MB 0x00030020 desktop 3 32 MB 0x00030030 desktop 0 32 MB 0x00040000 mobile 3 32 MB 0x00050000 desktop 0 32 MB

原生支持的Dev ID: 0x0106 0x1106 0x1601 0x0116 0x0126 0x0102

推荐的 Framebuffers:

Desktop:0x00030010 Laptop: 0x00010000 空缓冲帧: 0x00050000

注意:

1.只有 HD3000 能够直接驱动,HD2000需要选择空缓冲帧以使 IQSV 正常工作,具体详见 https://www.applelife.ru/threads/zavod-intel-quick-sync-video.817923/

(只有俄文版本,反正我自己没看过,根本看不懂)

2.通常 SNB 平台不用写 FB,WhateverGreen 会根据 board-id 值自动补充 FB。如果不是 SNB 架构(如 Ivy + HD3000 的 MacBookPro9,1)需要指定 FB,AAPL,snb-platform-id 可以写 10000300。

3.桌面级需要仿冒 device-id 为 26010000。

4.如果是7系列主板(如 X79,Z75,Z77 芯片组)需要仿冒 device-id 为 3A1C0000,并且打上 SSDT-IMEI 补丁

Intel HD Graphics 2500/4000 (Ivy Bridge架构)

支持 OS X 10.8.x 及更新版本。

Ivy FB 列表:

Framebuffer值 Type类型 Connectors输出接口数 TOTAL STOLEN Memory 0x01660000 desktop 4 24 MB 0x01620006 desktop 0 0 bytes 0x01620007 desktop 0 0 bytes 0x01620005 desktop 3 16 MB 0x01660001 mobile 4 24 MB 0x01660002 mobile 1 24 MB 0x01660008 mobile 3 16 MB 0x01660009 mobile 3 16 MB 0x01660003 mobile 4 16 MB 0x01660004 mobile 1 16 MB 0x0166000A desktop 3 16 MB 0x0166000B desktop 3 16 MB

原生支持的Dev ID: 0x0152 0x0156 0x0162 0x0166

推荐的 Framebuffers:

Desktop: 0x0166000A (default) 0x01620005 Laptop: 0x01660003 (default) 0x01660009 0x01660004 空缓冲帧: 0x01620007 (default)

注意:

1.只有 HD4000 能够直接驱动,HD2500需要选择空缓冲帧以使 IQSV 正常工作,具体详见 https://www.applelife.ru/threads/zavod-intel-quick-sync-video.817923/

2.如果是6系列主板需要仿冒 device-id 为 3A1E0000,并且打上 SSDT-IMEI 补丁。

Intel HD Graphics 4200-5200 (Haswell架构)

支持 OS X 10.9.x 及更新版本。

Azul FB 列表:

Framebuffer值 Type类型 Connectors输出接口数 TOTAL STOLEN Memory 0x0C060000 desktop 3 209 MB 0x0C160000 desktop 3 209 MB 0x0C260000 desktop 3 209 MB 0x04060000 desktop 3 209 MB 0x04160000 desktop 3 209 MB 0x04260000 desktop 3 209 MB 0x0D260000 desktop 3 209 MB 0x0A160000 desktop 3 209 MB 0x0A260000 desktop 3 209 MB 0x0A260005 mobile 3 52 MB 0x0A260006 mobile 3 52 MB 0x0A2E0008 mobile 3 99 MB 0x0A16000C mobile 3 99 MB 0x0D260007 mobile 4 99 MB 0x0D220003 desktop 3 52 MB 0x0A2E000A desktop 3 52 MB 0x0A26000A desktop 3 52 MB 0x0A2E000D desktop 2 131 MB 0x0A26000D desktop 2 131 MB 0x04120004 desktop 0 1 MB 0x0412000B desktop 0 1 MB 0x0D260009 mobile 1 99 MB 0x0D26000E mobile 4 131 MB 0x0D26000F mobile 1 131 MB

原生支持的Dev ID: 0x0d26 0x0a26 0x0a2e 0x0d22 0x0412

推荐的 Framebuffers:

Desktop:

0x0D220003 (default)

Laptop:

0x0A160000 (default) 0x0A260005 (recommended) 0x0A260006 (recommended)

Empty Framebuffer:

0x04120004 (default)

注意: 桌面 HD4400 和移动端 HD4200/HD4400/HD4600 需要仿冒 device-id 为 12040000

Intel HD Graphics 5300-6300 (Broadwell架构)

支持 OS X 10.10.2 及更新版本。

BDW FB 列表:

Framebuffer值 Type类型 Connectors输出接口数 TOTAL STOLEN Memory 0x16060000 desktop 3 32 MB 0x160E0000 desktop 3 32 MB 0x16160000 desktop 3 32 MB 0x161E0000 desktop 3 32 MB 0x16260000 desktop 3 32 MB 0x162B0000 desktop 3 32 MB 0x16220000 desktop 3 32 MB 0x160E0001 mobile 3 60 MB 0x161E0001 mobile 3 60 MB 0x16060002 mobile 3 56 MB 0x16160002 mobile 3 56 MB 0x16260002 mobile 3 56 MB 0x16220002 mobile 3 56 MB 0x162B0002 mobile 3 56 MB 0x16120003 mobile 4 56 MB 0x162B0004 desktop 3 56 MB 0x16260004 desktop 3 56 MB 0x16220007 desktop 3 77 MB 0x16260005 mobile 3 56 MB 0x16260006 mobile 3 56 MB 0x162B0008 desktop 2 69 MB 0x16260008 desktop 2 69 MB

原生支持的Dev ID: 0x0BD1 0x0BD2 0x0BD3 0x1606 0x160e 0x1616 0x161e 0x1626 0x1622 0x1612 0x162b

推荐的 Framebuffers:

Desktop: 0x16220007 (default) Laptop: 0x16260006 (default) Intel HD Graphics 510-580 (Skylake架构)

支持 OS X 10.11.4 及更新版本。

SKL FB 列表:

Framebuffer值 Type类型 Connectors输出接口数 TOTAL STOLEN Memory 0x191E0000 mobile 3 56 MB 0x19160000 mobile 3 56 MB 0x19260000 mobile 3 56 MB 0x19270000 mobile 3 56 MB 0x191B0000 mobile 3 56 MB 0x193B0000 mobile 3 56 MB 0x19120000 mobile 3 56 MB 0x19020001 desktop 0 1 MB 0x19170001 desktop 0 1 MB 0x19120001 desktop 0 1 MB 0x19320001 desktop 0 1 MB 0x19160002 mobile 3 58 MB 0x19260002 mobile 3 58 MB 0x191E0003 mobile 3 41 MB 0x19260004 mobile 3 35 MB 0x19270004 mobile 3 58 MB 0x193B0005 mobile 4 35 MB 0x191B0006 mobile 1 39 MB 0x19260007 mobile 3 35 MB

原生支持的Dev ID: 0x1916 0x191E 0x1926 0x1927 0x1912 0x1932 0x1902 0x1917 0x193B 0x191B

推荐的 Framebuffers:

Desktop: 0x19120000 (default) Laptop: 0x19160000 (default) Empty Framebuffer: 0x19120001 (default) Intel (U)HD Graphics 610-650 (Kaby Lake和Amber Lake Y架构)

支持 macOS 10.12.6 及更新版本(其中 UHD617 Amber Lake Y 型号最低版本 macOS 10.14.1)。

KBL/ABL FB 列表:

Framebuffer值 Type类型 Connectors输出接口数 TOTAL STOLEN Memory 0x591E0000 mobile 3 35 MB 0x87C00000 mobile 3 35 MB 0x59160000 mobile 3 35 MB 0x59230000 desktop 3 39 MB 0x59260000 desktop 3 39 MB 0x59270000 desktop 3 39 MB 0x59270009 mobile 3 39 MB 0x59160009 mobile 3 39 MB 0x59120000 desktop 3 39 MB 0x591B0000 mobile 3 39 MB 0x591E0001 mobile 3 39 MB 0x59180002 mobile 0 1 MB 0x59120003 mobile 0 1 MB 0x59260007 desktop 3 79 MB 0x59270004 mobile 3 58 MB 0x59260002 mobile 3 58 MB 0x87C00005 mobile 3 58 MB 0x591C0005 mobile 3 58 MB 0x591B0006 mobile 1 39 MB

原生支持的Dev ID:

KBL: 0x5912 0x5916 0x591B 0x591C 0x591E 0x5926 0x5927 0x5923 ABL: 0x87C0

推荐的 Framebuffers:

Desktop: 0x59160000 (default) 0x59120000 (recommended) Laptop: 0x591B0000 (default) Empty Framebuffer: 0x59120003 (default)

注意: UHD620 需要仿冒 device-id 为 16590000

Intel UHD Graphics 610-655 (Coffee Lake和Comet Lake架构)

支持 macOS 10.14 及更新版本(其中 UHD630 Comet Lake 型号最低版本 macOS 10.15.4,推荐10.15.5)。

CFL/CML FB 列表:

Framebuffer值 Type类型 Connectors输出接口数 TOTAL STOLEN Memory 0x3EA50009 mobile 3 58 MB 0x3E920009 mobile 3 58 MB 0x3E9B0009 mobile 3 58 MB 0x3EA50000 mobile 3 58 MB 0x3E920000 mobile 3 58 MB 0x3E000000 mobile 3 58 MB 0x3E9B0000 mobile 3 58 MB 0x3EA50004 mobile 3 58 MB 0x3EA50005 mobile 3 58 MB 0x3EA60005 mobile 3 58 MB 0x3E9B0006 mobile 1 39 MB 0x3E9B0008 mobile 1 58 MB 0x3E9B0007 desktop 3 58 MB 0x3E920003 desktop 0 1 MB 0x3E910003 desktop 0 1 MB 0x3E980003 desktop 0 1 MB 0x9BC80003 desktop 0 1 MB 0x9BC50003 desktop 0 1 MB 0x9BC40003 desktop 0 1 MB

原生支持的Dev ID:

CFL: 0x3E9B 0x3EA5 0x3EA6 0x3E92 0x3E91 0x3E98 CML: 0x9BC8 0x9BC5 0x9BC4

推荐的 Framebuffers:

Desktop: 0x3EA50000 (default) 0x3E9B0007 (recommended) Laptop: 0x3EA50009 (default) Empty framebuffer (CFL): 0x3E910003 (default) Empty framebuffer (CML): 0x9BC80003 (default)

注意:

1.macOS 10.14.4除外,九代 CoffeLake 需仿冒 device-id 为 923E0000。

2.Whiskey Lake UHD620 需仿冒 device-id 为 A53E0000。

Intel Iris Plus Graphics (Ice Lake架构)

支持 macOS 10.15.4 及更新版本。

ICL FB 列表:

Framebuffer值 Type类型 Connectors输出接口数 TOTAL STOLEN Memory 0xFF050000 mobile 3 193 MB? 0x8A710000 mobile 6 193 MB? 0x8A700000 mobile 6 193 MB? 0x8A510000 mobile 6 193 MB? 0x8A5C0000 mobile 6 193 MB? 0x8A5D0000 mobile 6 193 MB? 0x8A520000 mobile 6 193 MB? 0x8A530000 mobile 6 193 MB? 0x8A5A0000 mobile 6 193 MB? 0x8A5B0000 mobile 6 193 MB? 0x8A710001 mobile 5 193 MB? 0x8A700001 mobile 5 193 MB? 0x8A510001 mobile 3 193 MB? 0x8A5C0001 mobile 3 193 MB? 0x8A5D0001 mobile 3 193 MB? 0x8A520001 mobile 5 193 MB? 0x8A530001 mobile 5 193 MB? 0x8A5A0001 mobile 5 193 MB? 0x8A5B0001 mobile 5 193 MB? 0x8A510002 mobile 3 193 MB? 0x8A5C0002 mobile 3 193 MB? 0x8A520002 mobile 5 193 MB? 0x8A530002 mobile 5 193 MB?

原生支持的Dev ID: 0xff05 0x8A70 0x8A71 0x8A51 0x8A5C 0x8A5D 0x8A52 0x8A53 0x8A5A 0x8A5B

推荐的 Framebuffers:

Laptop: 0x8A520000 (default)

Billy Shao,

5/15/2021记.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3