Mengapa video merobek masalah seperti itu di Linux?

101

Saya telah menggunakan banyak varian Linux (kebanyakan turunan Debian) selama lebih dari satu dekade sekarang. Satu masalah yang belum saya lihat diselesaikan dengan memuaskan adalah masalah robekan horizontal, atau Vsync tidak diimplementasikan dengan benar.

Saya mengatakan ini karena saya menggunakan 5 distro yang berbeda pada 4 komputer yang berbeda dengan berbagai monitor dan kartu grafis Nvidia / AMD / ATI / Intel; setiap kali, ada masalah dengan robekan video bahkan dengan sedikit gerakan.

Ini adalah masalah besar, terutama karena bahkan Windows XP tidak memiliki masalah ini pada perangkat keras modern. Jika ada yang akan menggunakan Linux untuk apa pun, mengapa mereka ingin cacat konstan muncul ketika melakukan sesuatu yang bukan CLI?

Saya menduga beberapa pengembang tahu tentang masalah ini atau cukup peduli untuk memperbaikinya. Saya sudah mencoba hampir setiap komposer di luar sana, dan biasanya yang terbaik yang bisa mereka lakukan adalah meminimalkan masalah tetapi tidak menghilangkannya. Bukankah seharusnya sesederhana sinkronisasi dengan kecepatan refresh monitor? Apakah ada politik di antara komunitas OSS yang mencegah siapa pun melakukan kode yang memperbaiki ini?

Setiap kali saya meminta bantuan untuk masalah ini di masa lalu, itu akan diperlakukan sebagai kasus tepi (yang menurut saya sulit untuk dipercaya karena diberikan berapa kali saya mereplikasi masalah) atau saya mendapatkan solusi potensial yang paling meminimalkan robeknya.

Ravenstine
sumber
2
Anda tidak menyebutkan DE mana yang Anda gunakan. KDE baik-baik saja dengan robek selama setahun atau lebih sekarang.
Sparhawk
1
Bagaimana orang bisa dengan mudah meniru masalah? Di komputer Debian / Ubuntu / Mint?
Xen2050
50
XKCD ini sepertinya pas sekali di sini ...
Angew
Pengalaman saya dengan merobek sangat berbeda. Saya senang bermain game dan menonton film di Linux. Steam benar-benar menjadikan Linux platform yang layak untuk gim-gim hebat. Saya telah memainkan Prinsip Witcher 2 dan Talos akhir-akhir ini, dan saya belum melihat adanya sobekan dalam 50 jam bermain game. Ini dengan kartu Nvidia dengan driver eksklusif di Arch. Saya setuju dengan Xen2050 bahwa pertanyaan ini akan lebih bermanfaat jika spesifikasi yang tepat diberikan untuk build Anda. Saya tidak menyangkal ada masalah, saya hanya punya pengalaman yang sangat bagus.
labirin
Dengan pengomposisian Nvidia memecahkan masalah bagi saya, ketika saya menggunakan Nvidia pada tahun 2007. Namun tidak dalam layar penuh karena jendela layar penuh mematikan komposer, itu mengasumsikan Anda akan menjalankan permainan OpenGL, saya pikir. Dengan Intel, sudahkah Anda mencoba mengatur Bagian "Perangkat" Opsi "TearFree" "true" di X? Ini menggandakan penggunaan RAM video tapi saya pikir itu akan berhasil.
Zan Lynx

Jawaban:

92

Ini semua karena fakta bahwa server X sudah ketinggalan zaman, tidak cocok untuk perangkat keras grafis saat ini dan pada dasarnya semua komunikasi kartu video langsung dilakukan sebagai ekstensi ("patch") di atas inti kuno yang membengkak. Server X tidak menyediakan sarana sinkronisasi antara pengguna yang merender jendela dan layar yang menampilkan jendela, sehingga konten berubah di tengah proses render. Ini adalah salah satu masalah terkenal dari server X (ia memiliki banyak, seluruh model dari apa yang server lakukan dan sudah ketinggalan zaman - penanganan acara di jendela bawah, metadata tentang windows, primitif grafis untuk menggambar langsung ...). Toolkit widget sebagian besar ingin menutupi semua ini, tetapi merobeknya masih menjadi masalah karena tidak ada mekanisme untuk mengatasinya. Masalah tambahan muncul ketika Anda memiliki beberapa kartu yang memerlukan driver berbeda,

Wayland, yang agak tidak antusias mencoba untuk mengganti X, mendukung sinkronisasi vsync yang bertele-tele pada intinya, dan diiklankan untuk membuat setiap frame persis sempurna.

Jika Anda dengan cepat Google "merobek video wayland" Anda akan menemukan informasi lebih lanjut tentang segalanya.

orion
sumber
38
+1karena "X adalah masalahnya, lihatlah Wayland." Benar-benar serius, itu jawaban yang benar.
HalosGhost
2
@HalosGhost penginjilan di darat di mana saja :) masih tidak ada dukungan sesi jaringan?
kagali-san
3
@ kagali-san saya tidak mengatakan bahwa Wayland sempurna (bukan). Tapi ini pasti lebih baik daripada X. :)
HalosGhost
8
@ kagali-san: Weston memiliki backend RDP yang digabungkan hanya setahun yang lalu, jika Anda menemukan bahwa entah bagaimana relevan dengan pertanyaan tentang merobek video.
grawity
3
@orion: dan terima kasih kepada Anda halaman ini sekarang adalah hasil # 1 untuk wayland video tearing: P
Tobia Tesan
16

Robek layar sebagian besar muncul karena dua alasan - driver yang belum ada, dan kurangnya vsync dengan manajer jendela tertentu.

Sedangkan untuk driver, baik driver gratis maupun proprietary mendukung compositing dengan sobek-bebas (nvidia dan keduanya). Ketahuilah bahwa mis. Mengaktifkan desktop yang bebas air mata di katalis ( fglrx) dapat menyebabkan frame drop dan lag, sehingga biasanya dinonaktifkan secara default. Sedangkan untuk driver terbuka, vsync harus diaktifkan secara default. Jadi masalah robeknya layar dapat diselesaikan dengan mencoba driver yang berbeda dan mengonfigurasinya.

Sedangkan untuk manajer jendela, diketahui bahwa Openbox, Awesome, dan lainnya yang ringan tidak mendukung air mata. XFCE (xfwm, lebih spesifik) telah memperbaikinya dalam rilis terbaru, 4.11 / 12 sekarang memiliki Vsync. Lingkungan desktop utama juga tidak memiliki masalah dengan sobekan, termasuk GNOME, KDE, Unity dan Cinnamon.

Jika Anda masih mengalami robeknya layar, opsi Anda adalah mencoba manajer pembuat kompos lain seperti Compton atau Kwin. Kwin adalah manajer jendela untuk KDE dan saya memiliki pengalaman menggunakan kwin di XFCE ketika tidak mendukung vsync dan itu bekerja dengan sangat baik.

Jadi solusinya di sini adalah eksperimen, apa yang rusak di satu kombinasi driver / wm dapat bekerja di yang lain. Saya percaya situasi akan membaik segera karena driver open-source menjadi lebih maju dan beralih ke wayland dapat menyingkirkan masalah lama dengan Xorg.

Kirill-a
sumber
5
Tidak juga. KDE (dengan Kwin atau komposer lain) masih berkaca-kaca dengan NVidia atau Intel.
Ivan
1
Openbox dll. Berfungsi dengan bebas air mata - Anda hanya perlu menjalankan compositor terpisah, mis. Compton bekerja dengan sangat baik.
wingedsubmariner
1
@wingedsubmariner, ketika kalian merujuk ke openbox, apakah maksud Anda juga fluxbox?
nass
juga, sangat membantu bahwa Anda perhatikan bagaimana keadaan WM di lingkungan jendela yang berbeda.
nass
@nass Absolutely. Manajer jendela tidak pernah menjadi faktor pembatas.
wingedsubmariner
14

Jika Anda menggunakan driver nvidia> = 365.20, maka coba aktifkan opsi "Force Full Composition Pipeline" di nvidia-settings.

masukkan deskripsi gambar di sini

FuzzyTree
sumber
nVidia Quadro pada Lenovo W520, Fedora 25 dan ini berhasil :)
Jerther
4
juga jika Anda tidak memiliki opsi seperti itu, klik "pengaturan lanjutan" di bagian bawah jendela dan itu akan muncul. mengapa "pipa komposisi penuh" ini tidak diaktifkan secara default? ..
Rast
1
@Rast Karena dulu ada masalah kinerja.
Ruslan
BTW, tampaknya setidaknya driver Intel juga memiliki TearFreeopsi yang dapat Anda masukkan ke bagian yang sesuai Device. Saya baru saja mencobanya, dan itu memberikan hasil yang sangat mirip dengan Pipa Komposisi Lengkap nvidia.
Ruslan
Sepertinya saya tidak bisa mendapatkan pengaturan untuk disimpan pada reboot. Saya mencoba membuat file ~ / .xinitrc dan meletakkan "nvidia-settings --load-config-only &. / Etc / X11 / xinit / xinitrc" di dalamnya tapi itu sepertinya tidak berhasil
FragmentalStew
9

Saya memiliki sobekan yang kuat di sini dan sekarang sudah terpecahkan.

Setelah membaca ini ( penjelasan yang luar biasa ) tentang cara kerja server Xorg, saya menyadari bahwa server X mengecat pembaruan jendela langsung ke kartu memori kapan saja secara acak kecuali jika Anda menggunakan pengelola jendela berkemampuan gabungan.

Ketika pengomposisian diaktifkan manajer jendela menggabungkan semua perubahan dari buffer memori jendela yang berbeda, membuat gambar yang dihasilkan untuk seluruh layar dan membuangnya ke kartu tampilan pada satu pemotretan.

Sebagian besar distribusi modern memiliki window manager pengomposit. KWin untuk KDE, Mutter untuk Gnome, Muffin untuk Cinnamon, Marco untuk Mate, xfwm untuk XFCE, dll. Namun pengomposisian dapat dinonaktifkan untuk menghemat sumber daya.

Dalam kasus saya, pengomposisian dinonaktifkan di KDE4. Setelah diaktifkan, robeknya hilang. EDIT : Saya juga perlu mengubah opsi KWin strategi VSync dari Otomatis untuk Menggunakan Kembali konten layar untuk menghilangkan robek seperti yang dijelaskan dalam laporan bug spesifik kwin ini .

Opsi driver juga bisa menjadi faktor. Dalam kasus saya, opsi default berfungsi ok. Arch Wiki memiliki dokumentasi hebat tentang opsi untuk kartu tampilan yang berbeda seperti kartu Intel atau kartu NVIDIA .

Untuk memeriksa apakah opsi diaktifkan di konfigurasi xorg Anda saat ini, Anda dapat memeriksa log. Misalnya, untuk memeriksa apakah DRI diaktifkan:

cat /var/log/Xorg.0.log | grep DRI
David
sumber
1
Pada XFCE (dalam Xubuntu 16.04) pengomposisian diaktifkan secara default tetapi sinkronisasi ke vertikal kosong tidak . Gunakan xfwm4-tweaks-settingsperintah untuk menampilkan aplikasi tweaker dan pada tab Kompositor Anda dapat menemukan opsi di atas. Menyalakannya membuat perbedaan besar, dan dapat diperiksa di sini: vsynctester.com/index.html (nyalakan / matikan fitur saat menampilkan animasi). Ini tidak sempurna, ada beberapa frame yang terlewatkan, tetapi jauh lebih baik daripada saat dimatikan.
karatedog
1

Solusinya ada di sini: Linux Mint 17.3 MATE kini hadir dengan Compton .

Pergi ke Desktop Settings-> Windows-> Window Managerdan pilih Metacity + Compton. Itu dia.

Saya memiliki kartu video AMD dan berfungsi dengan baik untuk driver open source.

Untuk driver AMD yang berpemilik, ketika video HTML5 dimaksimalkan ke layar penuh, Anda mungkin melihat warna biru yang akan memenuhi seluruh layar. Untuk memperbaikinya, buat dan chmod +xskrip di bawah ini:

#!/bin/bash
killall compton 2> /dev/null
compton -b --unredir-if-possible

Jalankan setiap kali Anda me-restart sistem, tetapi jangan mencoba untuk menambahkannya Startup Applications- itu mungkin merusak startup karena beberapa alasan.

Constantine
sumber
0

Di Peppermint Linux, buka Preferensi> Peppermint Control Center, pilih Desktop Effects dan aktifkan "Enable desktop effects" dan "Synchronize drawing to the vertical blank".

Stefan Reich
sumber
0

Saya menggunakan Linux Mint XFCE dan masalah ini membuat saya frustasi cukup lama. Saya menemukan solusi untuk laptop saya dengan kartu grafis terintegrasi Intel dan itu memecahkan masalah robek . Untuk desktop saya dengan kartu NVIDIA trik itu tidak berfungsi. Tapi saya baru saja menemukan pelakunya.

Saya memiliki peningkatan kinerja segera ketika saya telah menonaktifkan komposisi jendela. Inilah cara Anda dapat melakukan itu:

Pergi ke Semua Pengaturan / Manajer Jendela Tweaks / Kompositor dan nonaktifkan semua itu.

Perlu diingat bahwa ini adalah distro khusus dan saya milik Mint dengan XFCE dan saya tidak tahu bagaimana menemukan hal serupa di distro lain.

Dejan Petrovic
sumber