Xorg

嘗試切換到雙掃描 X11 模式行失敗,並顯示“配置 crtc 0 失敗”

  • September 28, 2020

我有一個現代的1920x1200LED 顯示屏,最高 96 kHz HorizSync、最高 76 HzVertRefresh和最高 205 MHz 像素時鐘。

除了其原始解析度外,顯示器還可以1600x1200在 75 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

現代顯卡不再能夠在雙掃描模式下執行嗎?還是我應該責怪我的顯示器?

部分回答,快速回答:

顯卡已經從基於 CRTC(CRT 控制器)的傳統型號發展為6845,具有用於更改內部寄存器的索引和數據寄存器,在主要圖形硬體系列(英特爾、Nvidia、ATI/ AMD 等)。

在傳統 VGA 中,它是一個寄存器中的一種約定位。因為基本上所有顯卡仍然支持傳統 VGA ,所以它仍然存在。但特別是驅動數字輸出的電路已經移動,所以你真的需要顯卡的確切型號,你需要探勘數據表來確定它是否受支持。有時類似模型的數據表會有所幫助,但您需要進行試驗。

例如,查看Intel G35數據表(它已經很古老了),您將在第 2.7 節中看到兩個“顯示管道”,但在 register 中會看到傳統的雙重掃描CR09

如果您想用 VGA 恢復舊硬體,如果您可以使用合適的 X 版本和合適的顯卡驅動程序(但即使是 VESA 驅動程序也可以,不確定它是否可以),它很可能開箱即用。但是會進行雙重掃描)。

添加帶有雙重掃描的ModeLine通孔xrandr基本上只是在模式行資料結構中設置一個標誌。驅動程序需要解釋這個標誌,並使用它正確設置寄存器,並且(如上面的數據表所示)在很大程度上取決於硬體。

引用自:https://unix.stackexchange.com/questions/611581