Bagaimana cara saya menghentikan robekan video? (Nvidia prop driver, non-compositing window manager)

35

Saya memiliki masalah yang tampaknya menimpa banyak orang menggunakan driver Nvidia berpemilik:

Video tearing : garis horizontal halus (biasanya di dekat bagian atas layar saya) ketika ada banyak panning atau aksi dalam video.

(Catatan: beralih kembali ke driver nouveau default bukan opsi, karena manajemen daya yang tampaknya tidak ada menguras baterai saya beberapa kali lebih cepat)

Saya sudah mencoba Totem, Parole, dan VLC, dan robek terjadi pada mereka semua. Hasil terbaik adalah menggunakan X11 outputVLC, tetapi masih ada robek dengan tindakan yang relatif moderat.

Perangkat Keras: MacBook Air 3,2 - yang memiliki Nvidia GeForce 320M.

Ada dua perbaikan umum untuk merobek dengan driver prop Nvidia:

  1. Matikan pengomposisian , karena driver berpemilik Nvidia biasanya tidak bermain bagus dengan meng-compositing window manager di Linux (Compiz adalah pengecualian yang saya tahu). Tapi saya menggunakan window manager yang sangat ringan (Awesome window manager) yang bahkan tidak mampu membuat komposisi (atau efek keren apa pun). Saya juga memiliki masalah ini di Xfce, di mana saya telah menonaktifkan pengompositan.

  2. Mengaktifkan sinkronisasi ke VBlank. Untuk mengaktifkan ini, saya mengatur opsi nvidia-settingsdan kemudian autostart seperti nvidia-settings -ldengan program autostart saya yang lain. Ini sepertinya berhasil, karena ketika saya berlari glxgears, saya mendapatkan:

    $ glxgears
     Running synchronized to the vertical refresh.  The framerate should be
    approximately the same as the monitor refresh rate.
    303 frames in 5.0 seconds = 60.500 FPS
    300 frames in 5.0 seconds = 59.992 FPS
    

    Dan ketika saya memeriksa kecepatan refresh menggunakan nvidia-settings:

    $ nvidia-settings -q RefreshRate
    Attribute 'RefreshRate' (wampum:0.0; display device: DFP-2): 60.00 Hz.
    

    Semua ini menunjukkan sync ke VBlank yang diaktifkan. Seperti yang saya pahami, ini persis dirancang untuk berhenti robek, dan banyak masalah orang bahkan mendapatkan sesuatu seperti glxgearsmengeluarkan informasi yang benar. Saya tidak mengerti mengapa itu tidak berhasil untuk saya.

xorg.conf : http://paste.ubuntu.com/992056/

Contoh robekan yang diamati ::merobek video

Chan-Ho Suh
sumber
dapatkah Anda menyimpan file xorg.conf Anda? Apakah Anda bereksperimen dengan Option "TripleBuffer" "1"file xorg.conf Anda?
fossfreedom
Saya sudah mencoba TripleBuffer; tampaknya sedikit membantu, tetapi tidak banyak. Saya akan melewati saya xorg.conf.
Chan-Ho Suh
Apakah Anda menggunakan monitor ganda?
Alistair Buxton
Masalah yang sama di 12,10 dengan Flash di browser, meskipun tidak merobek VLC yang bisa saya lihat, atau ketika menyeret windows sekitar. Apakah Anda menemukan solusi sejak itu?
Bleep Bloop

Jawaban:

18

Satu hal untuk dicoba mungkin berhasil. Buka pengaturan nvidia dan buka bagian powermizer. Pilih "Kinerja Maksimum" di drop-down, dan Anda akan melihat level powermizer Anda melaju ke kecepatan tercepat.

Setelah selesai, coba videonya.

Di masa lalu, saya telah menemukan bahwa vsync tidak berfungsi ketika kartu nvidia pada pengaturan powermizer paling lambat.

mjnichol
sumber
Terima kasih! Ini bekerja untuk saya menggunakan driver nvidia berpemilik (310.19) di Arch Linux. Saya sudah mencoba untuk memecahkan ini cukup lama sekarang. Masalah yang sangat aneh.
Reid
Apakah mungkin untuk mengontrol pengaturan ini dari baris perintah? Agar saya dapat mengaktifkannya saat memulai pemutar video (dan menonaktifkannya setelah pemutar ditutup)?
panzi
1
Ah. nvidia-settings -a GPUPowerMizerMode=1mengaturnya ke kinerja dan nvidia-settings -a GPUPowerMizerMode=2ke otomatis.
panzi
11

Jika Anda menggunakan monitor ganda, driver nvidia hanya dapat menyinkronkan ke vblank dari salah satu monitor kecuali jika mereka menggunakan kecepatan refresh yang sama persis. Dan maksud saya sebenarnya . Ini secara efektif tidak mungkin kecuali kedua monitor adalah tipe yang sama persis. Jika pengandar nvidia menyinkronkan ke tampilan yang salah (misalnya, menyinkronkan ke layar bawaan ketika Anda ingin menonton film di TV eksternal) Anda dapat mengesampingkan pilihannya. Dari dokumentasi driver nvidia:

Saat menggunakan __GL_SYNC_TO_VBLANK dengan TwinView, OpenGL hanya dapat menyinkronkan ke salah satu perangkat layar; ini dapat menyebabkan kerusakan pada perangkat tampilan yang tidak disinkronkan OpenGL. Anda dapat menggunakan variabel lingkungan __GL_SYNC_DISPLAY_DEVICE untuk menentukan perangkat tampilan mana yang harus disinkronkan OpenGL. Anda harus mengatur variabel lingkungan ini ke nama perangkat layar; misalnya "CRT-1". Cari baris "Perangkat layar yang terhubung:" di file log X Anda untuk daftar perangkat layar yang ada dan namanya.

Saya telah menetapkan ini secara permanen di / etc / environment - cukup tambahkan sesuatu seperti ini di baris baru:

__GL_SYNC_DISPLAY_DEVICE="DFP-0"

Alistair Buxton
sumber
Hai Alistair. Terima kasih atas sarannya, tetapi saya hanya menggunakan satu tampilan.
Chan-Ho Suh
7

Saya juga menderita robeknya video di prosesor jembatan berpasir Intel saya. Ini berhasil untuk saya. Saya meletakkan baris berikut di "/ etc / environment" -

CLUTTER_PAINT = disable-clipped-redraws: disable-culling
CLUTTER_VBLANK = Benar

dan itu berhasil. Tekan enter di akhir dan salin tempelkan baris-baris ini. Mungkin perlu restart. Cobalah.

BRKsays
sumber
2
Terima kasih atas sarannya, tetapi ini adalah variabel lingkungan Gnome3 (seperti yang digunakan oleh Gnome Shell). Saya menggunakan window manager yang sangat minim, jadi ini tidak berlaku untuk saya. Selain itu, saya tidak memiliki prosesor Sandy Bridge.
Chan-Ho Suh
Solusi ini memperbaiki masalah robek yang saya alami di desktop Cinnamon (Mutter window manager) dan driver nvidia 313 pada 13.04. Maaf telah menabrak posting lama, tetapi terima kasih.
askuhn
4

Inilah cara saya memecahkan masalah vsync untuk video pada notebook ASUS K50IN saya dengan NVIDIA GeForce G102M . Saya menyadari bahwa jarak tempuh Anda mungkin berbeda karena kartunya berbeda, tetapi Anda dapat mencobanya ... Triknya bagi saya adalah menggunakan MPlayer barebones (tetapi bukan MPlayer2!). Itu tidak bekerja dengan pemain lain.

  1. Lakukan keajaiban compiz biasa dalam ccsm

    • Di bawah Komposit matikan, Deteksi Kecepatan Refresh, dan masukkan monitor Anda saat ini secara manual.
    • Saya mengaktifkan 'Salin ke Tekstur', tidak yakin apakah itu membantu atau tidak.
    • Di bawah OpenGL: Filter Tex. - Terbaik
    • Sinkronisasi ke VBlank aktif
    • Plugin Unity: (tidak yakin apakah ini membantu, tetapi diduga meningkatkan kecepatan) Panel Opacity - 1,0000, sama untuk Opacity Launcher. Dash Blur - Static
  2. Lakukan sihir pengaturan nvidia yang biasa:

    • Aktifkan Sinkronisasi ke VBlank di bawah pengaturan XVideo dan OpenGL
    • Atur Pengaturan Gambar ke Kualitas Tinggi di bawah pengaturan OpenGL
    • Di bawah Display Configuration atur resolusi Anda secara manual, lalu atur kecepatan refresh Anda dari Otomatis ke kecepatan refresh Anda saat ini.
  3. Instal mplayer dan vdpau (BUKAN mplayer2 !!! Ini baru dan eksperimental dan, bagi saya setidaknya, sangat lamban dengan VDPAU)

    • Paket: mplayer libvdpau1 vdpau-va-driver
  4. Siapkan MPlayer (Saya telah mencoba gnome-mplayer juga, tetapi tidak memiliki hasil yang sama sulit seperti yang saya coba)

    • Buka file ~ / .mplayer / config atau buat jika Anda tidak memilikinya. Anda mungkin juga harus membuat folder .mplayer . Ini harus berisi ini:
[default]
ao=pulse
vo=vdpau

Ubah ao menjadi alsa jika Anda menghapus audio pulsa.

Mulai ulang X dengan keluar / masuk lagi.

Cobalah, YMMV seperti biasa. Saya telah menemukan bahwa, terutama dalam rilis non-LTS atau dengan driver beta, ini mungkin tidak berfungsi lagi tergantung pada codec video.

Amir Dizdarević
sumber
1

Ini bekerja untuk saya pada driver ATI radeon, jadi mungkin cocok untuk Anda:

Tambahkan file konfigurasi (mis. Case /etc/X11/xorg.conf.d/20-nouveau.conf)

terdiri dari ini:

Section "Device"
    Option      "EXAVsync"  "True"
    Option      "GLXVBlank" "True"
    Identifier  "Nvidia card"
    Driver      "nouveau"
EndSection

EXA adalah kerangka kerja untuk mengomposisikan video; tampaknya tidak vsnc secara default.

Mungkin juga ada baiknya mencoba perangkat lunak yang berbeda (misalnya vlc) untuk memutar video.

Mark Williams
sumber
1
Seperti yang saya sebutkan di posting saya, beralih ke driver default bukan opsi.
Chan-Ho Suh
1

Tidak yakin apakah ini akan membuat Anda sedih, tetapi itu berhasil untuk saya. Buka nvidia-settings dan ubah Frecuency dari Auto ke 60. Dan tekan apply. Ini memecahkan masalah saya dengan robeknya video dan layar desktop yang berkedip-kedip. Sayangnya saya harus melakukan ini setiap kali saya restart.

vicentec
sumber
1
Seperti yang saya jelaskan di posting saya, kecepatan refresh tampilan saya adalah 60 Hz. Adapun masalah Anda, ikuti jawaban ini .
Chan-Ho Suh
1

Saya mengalami masalah air mata video yang sama. Dalam kasus saya, saya mengamati bahwa penghancuran terjadi hanya dalam mode layar penuh. Masalahnya tampaknya pada penskalaan video ke layar penuh. Setiap kali ukuran asli video diputar dan rasio resolusi layar tidak cocok ada kehancuran dalam video. Mengatur rasio aspek di smplayer ke rasio aspek display memperbaiki masalah bagi saya.

misal saya sedang memutar video berukuran 1280x714 dalam layar penuh ada robekan dalam video. Saat saya memaksakan rasio aspek video ke 16: 9, pemutarannya lancar.

Saya harus mencatat bahwa akar penyebab masalah tetap di sana dan menjengkelkan. Karena rasio aspek tidak tetap asli, akan ada beberapa deformasi dalam video. Namun lebih baik untuk menonton tanpa air mata;)

focknvidia
sumber
1

Saya menggunakan Ubuntu 12.04LTS 64bit dan saya memiliki nvidia gtx 660ti.

Saya menderita robekan video selama lebih dari sebulan sampai saya menemukan solusi.

Buka pengaturan server nvidia x -> PowerMizer -> Pengaturan PowerMizer (di dekat bagian bawah), dan di mana dikatakan, "Mode yang Diinginkan," ubah pengaturan dari Adaptive ke Prefer Maximum Performance.

pengguna144925
sumber
0

Jika Anda tidak menggunakan monitor ganda, ada kemungkinan lain. Ada dua jenis sinkronisasi untuk vblank: Satu untuk XVideo dan satu untuk OpenGL. Dalam nvidia-settings, satu berada di bawah "X Server XVideo Settings" dan yang lainnya berada di bawah "OpenGL / Settings". Yang mana yang benar-benar memengaruhi perangkat lunak pemutaran video Anda mungkin bergantung pada plugin output mana yang digunakannya.

Alistair Buxton
sumber
VLC memiliki opsi untuk kedua output dan saya sudah mencoba keduanya.
Chan-Ho Suh
0

Saya tidak yakin dari deskripsi Anda apakah Anda benar-benar melihat robek; biasanya, air mata tampak seperti gambar terbelah secara horizontal menjadi dua atau tiga bagian, dengan bagian-bagian yang tidak cocok. Ini terjadi karena bagian atas gambar dan bagian bawah tidak berasal dari bingkai yang sama dalam video. Wikipedia memiliki baik simulasi contoh dari layar robek . Garis horizontal halus terdengar berbeda, lebih seperti menyisir artefak dari interlacing yang buruk, meskipun mungkin hanya sulit untuk digambarkan.

Anda tidak menyebutkan detail video apa pun yang ingin Anda tonton, seperti resolusi, pengodean, dan jika video itu interlaced atau progresif, dan apakah Anda telah de-interlacing dihidupkan dalam VLC. Mungkin juga layak untuk memeriksa apakah pemrosesan video sedang diturunkan ke GPU , atau apakah CPU melakukan semua pekerjaan. Sudahkah Anda mengonfirmasi bahwa Anda berhasil melihat video yang sama di perangkat keras yang berbeda, atau di MacBook menggunakan OS X?

Anda mengatakan bahwa Anda telah mencoba menonaktifkan pengompositan pada XFCE, tetapi mungkin tidak ada salahnya untuk mencoba menambahkan:

Section "Extensions"
    Option "Composite" "Disable"
EndSection

ke /etc/X11/xorg.conf Anda hanya untuk memastikan. Juga, satu saran lain yang tidak disebutkan sejauh ini adalah menambahkan:

Option "UseEvents" "True"

ke bagian Perangkat atau Layar pada xorg.conf Anda.

MEMPERBARUI:

Tangkapan layar terlampir jelas menunjukkan robek! Jika pemain sebaliknya mengikuti decoding video (yaitu, tidak ada gagap lambat, hanya robek), maka mungkin tidak masalah apakah itu CPU atau GPU yang melakukan decoding. VLC memiliki opsi pada halaman Pengaturan video di Preferensi untuk menghidupkan dan mematikan "Output video yang dipercepat"; jika aktif, seharusnya menggunakan GPU untuk memecahkan kode. Jika Anda mengaktifkan pengaturan itu di VLC dan berjalan topdi terminal saat memutar video, Anda akan melihat perbedaan dalam penggunaan CPU antara kedua pengaturan. Anda juga dapat mencoba mematikan de-interlacing di VLC untuk melihat apakah itu membuat perbedaan.

Saya punya dua saran lain:

Saya tidak melihat ada yang salah dengan xorg.conf Anda, tetapi Anda dapat memeriksa ulang apakah keduanya disinkronkan ke pengaturan vblank (di X Server XVideo Settings dan OpenGL Settings) disimpan dengan benar di .nvidia-settings-rc. Beberapa orang menjalankan pengaturan nvidia sebagai root atau menggunakan gksudo (sehingga dapat memperbarui /etc/X11/xorg.conf), tetapi ini dapat menyebabkan pengaturan disimpan di /root/.nvidia-settings-rc daripada ~ /. nvidia-settings-rc. Seharusnya mengambil salinan Anda sendiri, tetapi untuk menghindari keraguan, Anda harus memeriksa kedua pengaturan vblank saat menjalankan pengaturan nvidia seperti Anda; jangan lupa untuk menekan "Simpan Konfigurasi Saat Ini" di halaman bawah pengaturan. Jika Anda menjalankan:

nvidia-settings -q=XVideoTextureSyncToVBlank -q=SyncToVBlank

maka Anda akan melihat kedua pengaturan diatur ke 1. Anda mungkin juga harus memeriksa bahwa namun Anda memuat pengaturan secara otomatis dengan me-reboot dan menjalankan perintah di atas lagi.

Hal lain yang bisa Anda coba adalah meng-upgrade / menurunkan driver nvidia Anda. Saya pernah mengalami robek dengan beberapa pembaruan versi driver kecil sebelumnya; pasti ada versi "baik" dan "buruk" dari driver nvidia dan yang terbaru tidak selalu yang terbaik. Anda dapat mencoba memutakhirkan menggunakan X-swat PPA:

https://launchpad.net/~ubuntu-x-swat/+archive/x-updates

Dan Anda dapat mencoba menurunkan versi ke versi sebelumnya yang tersedia untuk 12.04:

https://launchpad.net/ubuntu/precise/amd64/nvidia-current atau https://launchpad.net/ubuntu/precise/i386/nvidia-current

tergantung pada apakah Anda memiliki amd64 atau i386 diinstal. Klik nomor versi di sebelah kanan yang ingin Anda coba, unduh file deb dan instal dengan:

sudo dpkg --install <name of file>.deb

Misalnya, karena bug nvidia yang tidak terkait, saya harus mengunduh ini:

http://launchpadlibrarian.net/90395807/nvidia-current_290.10-0ubuntu2_amd64.deb

dari

https://launchpad.net/ubuntu/precise/amd64/nvidia-current/290.10-0ubuntu2

dan menginstalnya menggunakan:

sudo dpkg --install nvidia-current_290.10-0ubuntu2_amd64.deb

Satu poin kecil lainnya: satu jawaban lain menyebutkan mengubah kecepatan refresh dari Otomatis ke 60Hz, dan Anda mengatakan bahwa itu sudah diatur ke 60Hz. Namun, xorg.conf Anda yang terlampir memiliki nvidia-auto-select dalam metamodes (di bagian Screen), yang menunjukkan itu tidak diperbaiki. Namun, definisi Monitor Anda hanya menawarkan 60.0, jadi mungkin ini tidak penting. Mungkin menarik untuk mencadangkan dan memindahkan xorg.conf Anda, dan menjalankan kembali nvidia-xconfig dan pengaturan nvidia untuk melihat apakah Anda mendapatkan konfigurasi yang berbeda.

David Edwards
sumber
Hai David. Saya telah mengunggah gambar dugaan robek saya :-) Tolong beritahu saya jika itu cocok dengan "robek". Itu terjadi cukup banyak pada setiap video yang saya tonton, jadi saya tidak berpikir itu layak untuk membahas secara spesifik. Apakah Anda memiliki saran tentang apa yang harus diuji secara khusus? Saya sudah mencoba opsi-opsi itu (dan kemudian menghapusnya), tetapi mungkin ada beberapa kombinasi yang harus saya coba? Jika Anda dapat melihat xorg.conf yang saya tempel, beri tahu saya jika ada sesuatu yang tampaknya salah. Bagaimana saya memeriksa apakah GPU tidak melakukan pekerjaan? Akhirnya, ya video yang sama tidak pernah memiliki masalah di OS X pada mesin yang sama.
Chan-Ho Suh
Pengemudi nouveau tampaknya tidak memiliki masalah yang sama. Satu-satunya hal yang saya dapat untuk mendiagnosis yang tampak berbeda adalah bahwa dengan nouveau FPS adalah sekitar 600 tanpa konfigurasi tambahan yang diperlukan oleh saya.
Chan-Ho Suh
Ya, itu terlihat seperti merobek. Maaf meragukan :-)
David Edwards
Saya telah menambahkan saran lebih lanjut berdasarkan umpan balik Anda.
David Edwards
Sayangnya, tidak berhasil. Saya pikir mungkin satu-satunya hal yang harus dilakukan adalah menunggu Nvidia meningkatkan dukungan untuk GeForce 320M, meskipun saya bertanya-tanya mengapa Nouveau tidak memiliki masalah.
Chan-Ho Suh
0

Selain posting David sebelumnya: jika Anda ingin menginstal driver eksklusif NVidia menggunakan X-swat PPA, Anda juga dapat menambahkannya ke sumber apt Anda:

sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install nvidia-current

Ini akan menginstal versi terbaru dan memberi Anda informasi terkini tentang pengirimannya.

Yanok
sumber
0

Maaf jawaban ini agak untuk openSuSE, bukan Ubuntu, tapi saya akhirnya membuatnya bekerja dengan perubahan ini,

  • Nonaktifkan efek pengomposisian / jendela untuk sementara (alt + shift + f12 di openSuSE)
  • Gunakan VLC dengan pengaturan "Video" diatur ke "Output video OpenGL (eksperimental)". "Output video yang dipercepat (Hamparan)" juga diperiksa untuk saya. Saya menggunakan VLC 2.1.1 jika itu penting.
  • Atur pengaturan PowerMizer ke kinerja, seperti dalam jawaban mjnichol
  • Atur pengaturan OpenGL ke tinggi, seperti dalam jawaban Amir Dizdarević

Semoga ini bisa membantu! Saya membayangkan ada beberapa pengaturan untuk membuatnya bekerja dengan compositing, tapi saya sarankan setidaknya menonaktifkan compositing untuk pengujian. Pengaturan saya adalah monitor 4K dan kartu grafis GTX 650.

gatoatigrado
sumber
0

Anda dapat memperbaiki ini untuk VLC dengan mengubah output video ke "OpenGL GLX".

pengguna279078
sumber
0

Saya menjalankan Basic Luna OS 64-bit (berdasarkan Ubuntu 12.04 LTS) dan saya memiliki masalah yang sama. Mencari-cari di sekitar, saya akhirnya menemukan metode yang BEKERJA dan jelas itu tidak termasuk solusi "Pengaturan Powermizer untuk Kinerja", seperti yang banyak orang lain katakan.

Masalahnya adalah bahwa setelah memulai kembali pengaturan ini dipulihkan ke pengaturan "Auto" default dan ternyata aplikasi Nvidia-Settings tidak menyimpan dengan benar pengaturan baru Powermizer. TIDAK PERLU KHAWATIR!!!

HANYA MENGIKUTI INSTRUKSI DI BAWAH INI, SEDERHANA SEDERHANA:

http://ubuntu.aspcode.net/view/635400140124705175636416/nvidia-settings-powermizer-performance-mode-on-12044-64-bit

Seperti yang dikatakan artikel tersebut, buat Aplikasi Permulaan dan Anda siap untuk melakukannya !!!! PERCAYA AKU BEKERJA !!! Terima kasih banyak kepada Aquablue untuk memposting ini dan tentu saja, kepada Mike dari Nvidia Customer Care yang memberikan solusinya !!!

FYI, saya punya Phenom II X4, 8GB DDR3 RAM, Corsair SSD, GTX 650, Elementary Luna 64-bit.

Spyros P.
sumber
0

Saya bisa memilih jendela dengan kursor saya, memindahkan jendela, dan itu memperbaiki robeknya. Jadi sepertinya beberapa masalah panggilan balik di X.

Bagi saya perbaikan vlc adalah:

vlc -> tools -> preferensi -> video -> dalam dropdown 'output' pilih x11 video output(XCB)

abr
sumber
-2

Tampaknya Anda menjalankan beberapa window manager yang ringan (mungkin openbox). Jika demikian, Anda mungkin menggunakan xcompmgr sebagai manajer komposit untuk mendapatkan efek desktop seperti bayangan, transparansi, dll. Dalam kasus saya, mematikan xcompmgr memecahkan masalah yang sama: merobek sambil menonton video, khususnya yang di HD (yang merupakan CPU intensif). Rupanya, robekan terjadi karena bug di xcompmgr, yang merupakan proyek lama ditinggalkan. Untuk mematikan xcompmgr Anda dapat menjalankan "killall xcompmgr". Itu seharusnya bekerja. Semoga ini bisa membantu! Salud! Pablo.

Linux Usemos
sumber
Sepertinya Anda tidak membaca posting saya dengan saksama. Kebetulan, Anda tidak harus membunuh xcompmgr. Hanya saja jangan memulainya dari awal.
Chan-Ho Suh