查看文章 |
关于NVCAP的解释(附译文)
2008-03-03 21:15
原文:摘自NVinject,by gotoh Thanks to Arti and the lot of experiments we've been doing last weeks on hackintoshes and PowerPC Macintoshes with NVIDIA cards, NVCAP is now mostly mastered. As I've said here, NVCAP can't fix everything, but it is necessary to get proper display detection on VGA and DVI outputs. TV out and laptops' displays may require further hacking... Anyway, first I'll show what are the important part in NVCAP and how they work : 04000000 0000xx00 xx000000 00000000 00000000 the bold bytes define output channels. They are using a "bitmap" setting to define which output is used on which channel, and there's actually not so many possibilities for usual cards. Most cards are using 4 or 5 outputs : 1/ DVI - 2/ VGA, 3/ VGA, 4/ TV out 1/ DVI - 2/ VGA, 3/ DVI - 4/ VGA, 5/ TV out Later I'll show how this is defined in a PC NVIDIA ROM for GeForce 5/6/7/8 series. - so most dual DVI cards will have channels using this settings (5 different outputs) : channel 1 : DVI + VGA --> bitmap 0 0 0 1 1 --> hex 03 channel 2 : DVI + VGA + TV --> bitmap 1 1 1 0 0 --> hex 1c or channel 1 : DVI + VGA + TV --> bitmap 1 0 0 1 1 --> hex 13 channel 2 : DVI + VGA + TV --> bitmap 0 1 1 0 0 --> hex 0c TV output is usually defined a the last entry in the output definitions in VGA ROM, that's why it is using the last position (5th position on dual DVI cards, or 4th position on DVI + VGA cards) - for DVI + VGA cards (4 different outputs) : channel 1 : DVI + VGA --> bitmap 0 0 1 1 --> hex 03 channel 2 : VGA + TV --> bitmap 1 1 0 0 --> hex 0c or channel 1 : DVI + VGA + TV--> bitmap 1 0 1 1 --> hex 0b channel 2 : VGA --> bitmap 0 1 0 0 --> hex 04 (as you can see, TV out is on last available postition, so 4th position for 4 available outputs) or channel 1 : VGA --> bitmap 0 0 0 1 --> hex 01 channel 2 : DVI + VGA + TV --> bitmap 1 1 1 0 --> hex 0e or channel 1 : VGA + TV --> bitmap 1 0 0 1 --> hex 09 channel 2 : DVI + VGA --> bitmap 0 1 1 0 --> hex 06 The main difference with windows behaviour is that Windows NVIDIA drivers are able to dynamically define which channel to use for TV output, whereas OS X drivers use a fixed position for TV out, NVCAP being defined in VGA ROM and saved in IOreg. This setting is not able to change in OS X once drivers are loaded. So usual NVCAP for standard cards would be : dual DVI cards : 04000000 00000300 0c000000 00000000 00000000 --> disabling 5th position, no TV output. 04000000 00001300 0c000000 00000000 00000000 --> 5th position for TV out set on channel 1, TV out available when no other display is connected on channel 1. 04000000 00000300 1c000000 00000000 00000000 --> 5th position for TV out set on channel 2, TV out available when no other display is connected on channel 2. DVI + VGA cards : 04000000 00000100 06000000 00000000 00000000 --> disabling 4th position, no TV output, only 1 output on channel 1 and DVI + VGA on channel 2 04000000 00000300 04000000 00000000 00000000 --> disabling 4th position, no TV output, only 1 output on channel 2 and DVI + VGA on channel 1 04000000 00000300 0e000000 00000000 00000000 --> VGA only on channel 1, 4th position for TV out set on channel 2, TV out available when no other display is connected on channel 2. 04000000 00000900 06000000 00000000 00000000 --> VGA only on channel 1, 4th position for TV out set on channel 1, TV out available when no other display is connected on channel 1 (DVI + VGA on channel 2 using position 2 and 3, bitmap 0 1 1 0) Laptops usually have first channel using only 1 output for internal panel, on position 1, and depending on how many other outputs are available, second channel can use positions 2, 3, and 4 : 04000000 00000100 02000000 00000000 00000000 04000000 00000100 06000000 00000000 00000000 04000000 00000100 0e000000 00000000 00000000 more about the VGA ROM output definitions later... 译文:水平有限,有问题的地方请提出,以便完善。 感 谢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值一般为: 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 更多关于显卡BIOS的输出定义待续………… |

