Nvidia 驅動程式更新導致 Arch 上出現暫停 + 螢幕撕裂問題

Nvidia 驅動程式更新導致 Arch 上出現暫停 + 螢幕撕裂問題

我有一台 GeForce RTX 2070 SUPER,在我的電腦上執行 Arch 和 GNOME。

我確實記得在最近的 nvidia 驅動程式更新之前(特別是 Arch 上從 450.66-21 到 450.66-22)出現過螢幕撕裂,但啟動完整組合管道能夠修復它。然而,更新後,螢幕撕裂又出現了。升級到 nvidia-455 並沒有解決任何螢幕撕裂問題。在整個過程中,完整合成管道處於活動狀態,並且能夠減少一些螢幕撕裂,但並非始終如此。

由於沒有內核模式設置,並且除了 Full Composition Pipeline 之外,我的 xorg.conf 中也沒有其他選項,因此不會出現螢幕撕裂,但會出現掛起問題。我醒來後立即看到一個空白螢幕,在螢幕加載之前掛起一兩秒鐘。在上述 nvidia 驅動程式更新之前,不會出現此類掛起問題。螢幕載入後,某些應用程式(例如 anki 和 vscode)出現黑色偽影和其他圖形問題。例如,在 anki 中,整個螢幕是黑色的,而在 vscode 中,我看到側面有一些黑色矩形,終端提示的文字消失了。更改工作區可以消除空白的 anki 螢幕,同時將滑鼠懸停在工件上並重新打開應用程式內終端可以修復 vscode 問題。儘管如此,這是一個非常煩人的問題,它也會影響我嘗試應用的一些 GNOME 主題。我懷疑同樣的問題也會影響其他應用程式。

我花了一個半小時​​在網上研究這個問題並嘗試了不同的解決方案,但沒有成功。

xorg.conf 中沒有 TripleBuffering 和 IndirectGLXProtocol 選項的模式設定(例如 nvidia-drm.modeset=1)不會導致掛起問題,但會導致嚴重的螢幕撕裂

開啟 TripleBuffering 和/或關閉 IndirectGLXProtocol 會導致上述掛起問題,但不會出現螢幕撕裂(有或沒有核心模式設定)。

正如您所看到的,我要么出現螢幕撕裂但沒有暫停問題,要么沒有螢幕撕裂和暫停問題。僅將 nvidia 軟體包降級到破壞我的設定的驅動程式更新之前的版本會破壞 lightdm。在 9 月 17 日(驅動程式更新之前)降級到鏡像是可行的,但並不理想,因為我寧願進行圖形不便的軟體更新,也不願電腦陷入困境。

我不完全確定這是 nvidia 驅動程式的具體問題,但考慮到上述事件,我相信這是相當合理的。

如果您遇到同樣的問題,請告訴我。我也想知道您嘗試過哪些解決方案。

答案1

我解決了問題!

Arch Linux 論壇上的好心人發現了我在啟動過程中遇到的螢幕撕裂與競爭條件不一致的情況。如果 nvidia 模組加載正確,那麼我就不會出現螢幕撕裂的情況。但如果沒有,那麼電腦將恢復到其他驅動程式(我很確定是 nouveau),並且會發生螢幕撕裂。為了解決這個問題,我透過將 nvidia 模組新增至 /etc/mkinitcpio.conf 中的清單來確保 nvidia 模組始終正確加載,MODULES如下所示:

MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)

我還了解到,我遇到的掛起圖形問題是由 nvidia 在掛起期間處理它認為「不必要的」視訊記憶體引起的。為了解決這個問題,我透過將此行新增至我的 /etc/modprobe.d/nvidia.conf 來載入帶有實驗選項的 nvidia 模組:

options nvidia NVreg_PreserveVideoMemoryAllocations=1

最後,我重建了 initramfs 映像sudo mkinitcpio -p linux並重新啟動。 nvidia 現在在啟動過程中始終加載(我可以看出,因為不再出現螢幕撕裂!),而 anki 和 vscode 的所有圖形問題都消失了。

相關內容