為什麼影片在 Linux 中會出現撕裂這樣的問題?
十多年來,我已經使用了許多 Linux 變體(主要是 Debian 衍生產品)。我還沒有看到令人滿意的解決的一個問題是水平撕裂的問題,或者沒有正確實現 Vsync。
我這樣說是因為我在 4 台不同的電腦上使用了 5 種不同的發行版,這些電腦具有各種顯示器和 Nvidia/AMD/ATI/Intel 顯卡;每次,即使是輕微的運動也會出現影片撕裂的問題。
這是一個大問題,尤其是因為即使是 Windows XP 在現代硬體上也沒有這些問題。如果有人打算將 Linux 用於任何事情,為什麼他們希望在做任何非 CLI 的事情時不斷出現缺陷?
我猜要麼很少有開發人員知道這個問題,要麼足夠關心來解決它。我已經嘗試了幾乎所有的合成器,通常他們能做的最好的事情就是盡量減少問題而不是消除它。不應該是和顯示器的刷新率同步那麼簡單嗎?OSS 社區中是否存在某些政治因素阻止任何人送出修復此問題的程式碼?
每次我在過去就這個問題尋求幫助時,它要麼被視為邊緣案例(考慮到我複制問題的次數,我很難相信它)或者我得到了潛在的解決方案最多盡量減少撕裂。
這一切都是因為 X 伺服器已經過時,不適合當今的圖形硬體,而且基本上所有直接的影片卡通信都是作為古老臃腫核心的擴展(“更新檔”)完成的。X 伺服器沒有提供使用者渲染視窗和顯示視窗的螢幕之間的內置同步方式,因此內容在渲染過程中發生變化。這是 X 伺服器的眾所周知的問題之一(它有很多關於伺服器功能的完整模型並且已經過時 - 子視窗中的事件處理、關於視窗的元數據、用於直接繪製的圖形原語……)。小元件工具包大多希望掩蓋這一切,但撕裂仍然是一個問題,因為沒有處理它的機制。當您有多個需要不同驅動程序的卡時,會出現其他問題,
Wayland 有點不情願地試圖取代 X,它在其核心中支持一種迂腐的 vsync 同步,並且標榜每一幀都完美無缺。
如果你快速Google“wayland video tearing”你會發現更多關於一切的資訊。