Skip to content

设置64mb动态显存

Steve Zheng edited this page May 1, 2022 · 23 revisions

简介

根据 [Guide] Alternative to the minStolenSize patch with 32mb DVMT-prealloc,Broadwell/Skylake/KabyLake 平台上一个常见问题是PC厂商设定了相对较小的动态显存。苹果的帧缓存驱动通常假定动态显存在64mb或以上,然而大部分PC厂商只有32mb动态显存。因此,在 EFI 里我们通过给帧缓存打补丁来让系统适配32mb动态显存。

然而,我发现在小米笔记本Pro上,32mb动态显存似乎不支持4K显示,添加 -cdfon 启动参数也不管用。设置64mb动态显存并移除动态显存补丁可以让我们的机器支持原生4K。

注意: HDMI 接口使用的是 HDMI 1.4协议,似乎只支持 4K 30赫兹 HDMI。

怎么安装

TM1701

CybFallenChromium 创建了设置动态显存的脚本。请下载 DVMT_and_0xE2_fix 并阅读 README中文版 来设置64mb动态显存。
运行完脚本后,你需要移除动态显存补丁:

  • Clover 和 OC 用户都可用:
  • 打开 /EFI/CLOVER (或者 OC)/config.plist 删除以下代码:
    <key>framebuffer-fbmem</key>
    <data>AACQAA==</data>
    <key>framebuffer-stolenmem</key>
    <data>AAAwAQ==</data>
  • 然后修改 framebuffer-flags 来开启 FBEnableDynamicCDCLK 并重启
    <key>framebuffer-flags</key>
-   <data>CwfDAA==</data>
+   <data>CwfjAA==</data>

TM1707

下面这张表是关于 BIOS 的一些高级配置,感谢 goodyttoor

项目 地址 选项
DVMT Pre-Allocated 0xDF 0x1: 32M (默认), 0x2: 64M (推荐)
DVMT Total Gfx Mem 0xE0 0x1: 128M, 0x2: 256M (默认), 0x3: MAX (推荐)
CFG Lock 0x3C 0x0: Disabled (推荐), 0x1: Enabled (默认)
BIOS Lock 0x17 0x0: Disabled (推荐), 0x1: Enabled (默认)

然后根据 TM1701 来修改 config.plist

TM1905

下面这张表是关于 BIOS 的一些高级配置,感谢 htmambo

项目 地址 配置项 选项 默认 推荐
RTC 0x54A SETUP 0x0:ACPI Time and Alarm Device; 0x1:Legacy RTC 0x0 0x1
DVMT 0x107 SaSETUP 0x0:0M, 0x1:32M, 0x2:64M 0x1 0x2
DVMT Total Gfx Mem 0x108 SaSETUP 0x1:128M, 0x2:256M, 0x3:Max 0x3 0x3
CFG LOCK 0x3E CpuSetup 0x0:Disabled, 0x1:Enabled 0x1 0x0
MSR LOCK 0x2B SETUP 0x0:Disabled, 0x1:Enabled 0x0 0x0
BIOS Lock 0x17 SETUP 0x0:Disabled, 0x1:Enabled 0x1 0x0

修改完配置后,你需要在 config.plist 里删除 framebuffer-stolenmem

  • 打开 /EFI/CLOVER (或者 OC)/config.plist,删除以下代码:
  <key>framebuffer-stolenmem</key>
  <data>AADgAQ==</data>

鸣谢