无需 Catalyst 控制中心即可更改过扫描/欠扫描设置

无需 Catalyst 控制中心即可更改过扫描/欠扫描设置

刚刚安装了 Windows 8,并下载了 ATI 网站推荐的 Catalyst 版本。但是它说无法启动!我的主显示器通过 HDMI 电缆连接到我的 PC,并且显示不是全屏(显示周围有一个空白填充区域)。通常我会更改 CCC 中的过扫描/欠扫描设置来重置它,但由于我无法访问它,我想知道是否有任何方法可以在不使用 CCC 的情况下更改它(也许通过注册表?)谢谢。

答案1

我曾与从事 Catalyst 驱动程序工作的 AMD 开发人员就过扫描/欠扫描问题进行过广泛的讨论。

基本的想法是,AMD 宁愿对那些 HDMI 显示器进行低扫描过度扫描,并创建太小的图片(图片周围有空白),而不是不扫描不足,并导致人们的显示器总是过扫描(没有设置更改它并且 EDID 信息不正确)导致桌面显示过大。争论在于,如果桌面过大,则用户看不到 Catalyst 图标或开始菜单的位置,因此他们无法浏览 UI 以进行适当的更改。因此,他们坚持在 HDMI 上默认使用欠扫描,以确保没有人会遇到桌面对于他们的屏幕来说太大的情况(UI 元素“悬在屏幕外”)。

我不同意这个政策,但事实就是如此。这似乎是图形驱动程序开发人员做出的一个相当独特的决定,因为我无法在其他一些非 AMD 设备上重现这种怪异现象:Android 平板电脑、Nvidia 显卡和英特尔片上显卡。

有一种方法可以直接调整欠扫描/过扫描Linux通过修改“PCSDB”(持久配置存储数据库)中的值。我不知道 Windows 上的等效项是什么,或者您是否甚至可以在不使用 Catalyst 的情况下读取/写入设置。

我无法亲自测试这个解决方案,但看起来它对使用较新的驱动程序的人有效,所以试一试:前往 Tom's Hardware或者我将在此重新发布它:

I found a fix for the overscan issue  
Go to the following key in the registry:  
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\video{####....}\0000 
Create a new DWORD: 
"DigitalHDTVDefaultUnderscan" = dword 0x0000 
Note: there might be several {####....} , should be the one with most of the ATI settings. 
Source:http://forum.beyond3d.com/showthread.php?t=62100

以下是几年前 AMD 消息人士(不愿透露姓名)关于其 HDMI 欠扫描/过扫描政策的引述。请注意,这适用于 Windows 和 Linux。

默认为欠扫描的目的并不是让我们依赖高清电视过扫描回到全屏。这很糟糕,因为图像质量在 GPU 缩小后会损失,然后又在电视上放大。相反,它解决了电视默认为过扫描且没有禁用它的机制(许多廉价高清电视)的问题。在这种情况下,电视将过扫描图像,因此菜单通常会显示在屏幕边缘之外,并阻止用户轻松访问它们。默认值纯粹是为了可用性目的,CCC-LE 应该能够将其更改为 0%(或者您可以使用该注册表/PCS 键强制默认为 0%)。

如果您有一台智能高清电视,可以告诉我们是否过扫描,我们将采取正确措施,默认为 0%。但是,没有多少制造商在显示器的 EDID 中正确设置该属性,因此我们恢复默认的欠扫描。

欠扫描仅应是 HDMI 上的默认设置。DisplayPort 或 DVI 默认情况下不应欠扫描。

答案2

对于 Linux,修复方法是在终端中输入以下命令:

sudo aticonfig --set-pcs-val=MCIL,DigitalHDTVDefaultUnderscan,0

(在此处发布此内容只需要为所有平台添加一个书签)

答案3

我使用了 steffen 的答案来让它在 Windows 10 上运行,并对其进行了更详细的追踪。

我之前曾尝试禁用TVEnableOverscan和,但没有成功(也在下的密钥DigitalHDTVDefaultUnderscan中更改它们),以及旧版 CCC/驱动程序安装程序的多个版本和组合。在升级到 Windows 10 之前,它在 Windows 8.1 上运行良好(我不记得做过任何特别的事情来让它工作,但不是 100% 确定)。amdkmdagCurrentControlSet\Services

首先,在 Windows 10 上,解压后的安装程序包(13.4 beta)无法运行。相反,我转到设备管理器并卸载显示适配器,选中删除驱动程序的复选框。然后我选择操作->扫描硬件改动并得到了“Microsoft Basic Display Adapter”。我右键单击并选择更新驱动程序,然后选择自己指定驱动程序的选项。我Packages\Drivers\Display\W86A_INF按照 steffen 的描述从解压的 AMD 包中选择了文件夹。硬件检测/安装过程相当长,最后驱动程序版本仍然是 Windows 10 版本(03/01/2015,8.970.100.9001,而不是包中的 04/24/2013,8.970.100.0000)。但是,运行安装程序并安装 VISION Conrol Center 会导致 CCC 正常运行。它报告了正确的旧版本驱动程序。

此时,我可以在运行时调整过扫描进程监控并观察当我按下“应用”时设置了哪些注册表值:

15:26:19.6441241    CCC.exe 6740    RegSetValue HKLM\System\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000\GDOADJR6 DFP    SUCCESS Type: REG_BINARY, Length: 384, Data: 00 00 00 00 02 00 00 00 10 00 00 00 00 00 00 00
15:26:19.6457995    CCC.exe 6740    RegSetValue HKLM\System\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000\DALR6 DFP1920x1080x0x59 SUCCESS Type: REG_BINARY, Length: 48, Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
15:26:19.6468669    CCC.exe 6740    RegSetValue HKLM\System\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000\DAL_DFPOptions  SUCCESS Type: REG_BINARY, Length: 4, Data: 18 00 00 00

我相信前缀与HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Videosteffen 和其他人提到的键解析的路径相同。进程监视器没有显示完整数据,但经过一些实验并使用 RegEdit 放大后,显示相关字节位于两个都DALR6 和 GDOADJR6 - 前者位于字节 37(偏移量 0x24),后者位于字节 21(偏移量 0x14)。当过扫描完全关闭时(在 GUI 的右侧),这些值为 0,滑块向左移动一次,这些值增加一。

最后,我再次从设备管理器中卸载了显示适配器驱动程序(包括删除驱动程序)。Windows 自动经历了另一个长时间的检测周期,并返回到原始的 Microsoft 提供的驱动程序。出于某种原因,CCC 似乎仍然有效,现在显示更现代的驱动程序版本。这使我能够再次在 GUI 中进行更改并观察效果。令人困惑的是,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video切换设备/驱动程序时会在键下创建新条目。更令人困惑的是,第二次出现的情况是,我的显示器频率为 60Hz 而不是 59Hz,因此相关键略有变化。但是,两个偏移量仍然正确,并随着滑块/应用过程而改变。

我没有在未安装 CCC 的情况下测试过这一点,但删除后它仍然正常工作。我只能假设它们被驱动程序读取:最坏的情况是在启动时,也可能是在每次重大显示事件(如更改分辨率)时。

Windows 10 TH2(Threshold 2)

安装 TH2 后,过扫描又出现了,而且更严重。二进制 blob 的大小发生了变化,默认值现在是 8,而不是 2。驱动程序版本保持不变,二进制数据的位置也保持不变。DALR6 仍然位于字节 37(偏移量 0x24),GDOADJR6 仍然位于字节 21(偏移量 0x14)。我最初误读了 RegEdit 中的十六进制偏移量,因此安装了与以前相同的 Catalyst 13.4 beta VISION 控制中心(没有驱动程序)。这次它第一次就成功了,并且能够立即从 GUI 控制过扫描。

答案4

遇到了同样的问题,我的解决方案是:

使用 regedit 设置键:

HKLM\System\CurrentControlSet\Video\***\0000
    DWORD: TVEnableOverscan = 0x0
    DWORD: DigitalHDTVDefaultUnderscan = 0x0

HKLM\System\CurrentControlSet\Video\***\0000\DAL2_DATA_2.0\DisplayPath_*\MODE_***\Adjustment
    rename "Underscan" to for example "oldUnderscan" to disable it

重新启动并查看是否有效

仅更改前两个值对我来说不起作用。

您需要将 *s 替换为注册表中找到的适当值。我还猜测“0000”是第一个屏幕,“0001”是第二个屏幕,依此类推(第一个是我的 HDTV,第二个是普通 PC 显示器 - 其 TVEnableOverscan 已设置为 0)

相关内容