阅读本文需要有一定的黑苹果基础知识,这些可以到远景论坛学习。另:本文需要你有一个已经可以正常驱动显卡的DSDT,基于这个DSDT修改NVCAP就简单多了。
首先了解一下NVCAP,网上有篇文章非常全面,直接摘抄过来了:
————————————————————
译文:水平有限,有问题的地方请提出,以便完善。
感 谢Arti以及上周我们在hackintoshes和ppcMacintoshes 上所做的大量NVIDIA 显卡实验。 目前 NVCAP 值已经基本掌握。在论坛我已说过,NVCAP 值不能解决所有问题,但它可以让 你获得正确的 VGA,DVI 显示输出。TV 输出和笔 记本显示可能需要进一步的破解。 首先,讲解下 NVCAP 的重要部分以及它们怎么工作的:
04000000 0000xx00 xx000000 00000000 00000000
粗体字节定义了输出通道,它们使用一种“位图”设置来定义哪个输出设在哪个通道上,但实 际上对于常用的显卡并没有那么多的组合。 大多数显卡使用 4 或 5 种输出:
1/ DVI – 2/ VGA, 3/ VGA, 4/ TV out
1/ DVI – 2/ VGA, 3/ DVI – 4/ VGA, 5/ TV out
接下来,讲解下在 GeForce 5/6/7/8 系列 PC NVIDIA ROM(显卡 bios)中是怎么定义的。
-大多双 DVI 显卡的通道使用这种设置(5 种输出):
通道 1:
DVI + VGA –> bitmap 0 0 0 1 1 –> hex 03
通道 2:
DVI + VGA + TV –> bitmap 1 1 1 0 0 –> hex 1c
或者
通道 1:
DVI + VGA + TV –> bitmap 1 0 0 1 1 –> hex 13
通道 2:
DVI + VGA + TV –> bitmap 0 1 1 0 0 –> hex 0c
在 VGA ROM 中 TV 输出一般被定义在最后一个输出口,这就是为什么它使用最后的位置。(双 DVI 显卡的第五个,或者 DVI+VGA 显卡的第四个)。
-对于 DVI+VGA 显卡(4 种输出):
通道 1 :
DVI + VGA –> bitmap 0 0 1 1 –> hex 03
通道 2 :
VGA + TV –> bitmap 1 1 0 0 –> hex 0c
或者
通道 1 :
DVI + VGA + TV–> bitmap 1 0 1 1 –> hex 0b
通道 2 :
VGA –> bitmap 0 1 0 0 –> hex 04
(如你所看到的,TV 输出在最后的可用位置,即 4 种可用输出的第四位置)
或者
通道 1 :
VGA –> bitmap 0 0 0 1 –> hex 01
通道 2 :
DVI + VGA + TV –> bitmap 1 1 1 0 –> hex 0e
或者
通道 1 :
VGA + TV –> bitmap 1 0 0 1 –> hex 09
通道 2 :
DVI + VGA –> bitmap 0 1 1 0 –> hex 06
对于窗口化系统,最大的不同就是 Windows 下的 NVIDIA 驱动可以动态定义哪一个通道用于 TV 输出,而 OS X 驱动使用固定位置来输出,NVCAP 值被定义在显卡 bios 中,并存储于输入 输出设备的注册文件内。这样的设置导致一旦驱动被加载到 OS X 中就不能改变。
标准显卡的 NVCAP 值一般为:
双DVI显卡:
04000000 00000300 0c000000 00000000 00000000 –>
取消第五个位置, 没有 TV 输出.
04000000 00001300 0c000000 00000000 00000000 –>
第五个位置用于 TV 输出设在通道 1, 当没有其他显示连接到通道 1 时 TV 输出可用.
04000000 00000300 1c000000 00000000 00000000 –>
第五个位置用于 TV 输出设在通道 2, 当没有其他显示连接到通道 2 时 TV 输出可用.
DVI+VGA 显卡:
04000000 00000100 06000000 00000000 00000000 –>
取消第四位置, 没有 TV 输出, 只有 1 个输出设在通道 1, DVI + VGA 输出设在通道 2.
04000000 00000300 04000000 00000000 00000000 –>
取消第四位置, 没有 TV 输出, 只有 1 个输出设在通道 2, DVI + VGA 输出设在通道 1.
04000000 00000300 0e000000 00000000 00000000 –>
VGA 输出设在通道 1, 第四位置用于 TV 输出设在通道 2,当没有其他显示连接到通道 2 时 TV 输出可用.
04000000 00000900 06000000 00000000 00000000 –>
VGA 输出设在通道 1, 第四位置用于 TV 输出设在通道 1,当没有其他显示连接到通道 1 时 TV 输出可用. (DVI + VGA 输出设在通道 2 使用第二第三位置,位图 0 1 1 0)
对于内置面板笔记本一般将通道 1 用于 1 种输出,即主显示,在第一位置,当有其他输出可 用时,通道 2 可以使用位置 2,3,4:
04000000 00000100 02000000 00000000 00000000
04000000 00000100 06000000 00000000 00000000
04000000 00000100 0e000000 00000000 00000000
————————————————————
然后就是根据这篇文章写出你所需要的nvcap,然后找到DSDT中显卡那一段,一般在AGP或PEGP 或GFX0等附近。
比如我的显卡是双DVI的GTX260,之前用一个软件获得的nvcap是(用这个nvcap单显示器输出可以,双屏不行):