尝试切换到 doublescan X11 模型行失败,并显示“配置 crtc 0 失败”

尝试切换到 doublescan X11 模型行失败,并显示“配置 crtc 0 失败”

我有一个现代化的1920x1200LED 显示屏,频率高达 96 kHz HorizSync、76 HzVertRefresh和 205 MHz 像素时钟。

除了其原始分辨率外,显示器还可以在1600x120075 Hz 下以 (4:3) 分辨率运行:

  1600x1200 (0xa1) 202.500MHz +HSync +VSync
        h: width  1600 start 1664 end 1856 total 2160 skew    0 clock  93.75KHz
        v: height 1200 start 1201 end 1204 total 1250           clock  75.00Hz

现在,我尝试将其切换到800x600与上述1600x1200模式等效的双扫描模式(也是 75 Hz;所有模型行均取自这里):

xrandr --newmode "800x600d" 101.25 800 832 928 1080 600 600 602 625 DoubleScan +HSync +VSync
xrandr --addmode DP1 800x600d

生成的视频模式已成功添加,并且在输出中清晰可见xrandr

  800x600d (0x1f7) 101.250MHz +HSync +VSync DoubleScan
        h: width   800 start  832 end  928 total 1080 skew    0 clock  93.75KHz
        v: height  600 start  600 end  602 total  625           clock  75.00Hz

但是一旦我尝试切换到新模式,我立即收到错误:

# Mode by name
$ xrandr --output DP1 --mode 800x600d
xrandr: cannot find mode 800x600d

# Mode by id
$ xrandr --output DP1 --mode 0x1f7
xrandr: Configure crtc 0 failed

现代显卡是否不再能够在双扫描模式下运行?或者我应该责怪我的显示器?

答案1

部分答案,快速回答:

显卡是从基于 CRTC(CRT 控制器)的传统模型发展而来的,最初是作为6845,用索引和数据寄存器来更改内部寄存器,与主要图形硬件系列(Intel、Nvidia、ATI/AMD 等)完全不同。

在传统 VGA 中,它是其中一个寄存器中的一种约定位。因为传统 VGA 是仍然基本上所有显卡都支持,这一点仍然存在。但特别是驱动数字输出的电路已经发生了变化,因此您确实需要显卡的确切型号,并且您需要查找数据表以确定它是否受支持。有时类似模型的数据表会有所帮助,但您需要进行试验。

例如看看英特尔G35数据表(已经很古老了),您将在第 2.7 节中看到两个“显示管道”,但在寄存器中传统的双扫描CR09

如果你想用 VGA 恢复旧硬件,如果你可以为该卡提供合适的 X 版本和合适的驱动程序,那么它很可能开箱即用(但即使是 VESA 驱动程序也可以,不确定是否可以)不过,会进行两次扫描)。

添加具有双扫描的ModeLine过孔xrandr基本上只是在模型行数据结构中设置一个标志。驱动程序需要解释此标志,并使用它正确设置寄存器,而这(如上面的数据表所示)在很大程度上取决于硬件。

相关内容