Come posso smettere di strappare i video? (Nvidia prop driver, window manager senza compositing)


35

Ho quel problema che apparentemente affligge molti usando il driver proprietario Nvidia:

Strappo video : sottili linee orizzontali (di solito vicino alla parte superiore del mio display) quando c'è molto panning o azione nel video.

(Nota: il ritorno al driver nouveau predefinito non è un'opzione, in quanto la sua gestione dell'energia apparentemente inesistente scarica la mia batteria più volte più velocemente)

Ho provato Totem, Parole e VLC e lo strappo si verifica con tutti loro. Il miglior risultato è stato l'uso X11 outputin VLC, ma c'è ancora lacrimazione con un'azione relativamente moderata.

Hardware: MacBook Air 3,2 - che ha un Nvidia GeForce 320M.

Esistono due correzioni comuni per strappare con i driver di prop Nvidia:

  1. Disattiva il compositing , poiché i driver proprietari di Nvidia di solito non funzionano bene con i window manager di compositing su Linux (Compiz è un'eccezione di cui sono a conoscenza). Ma io uso un window manager estremamente leggero (Awesome window manager) che non è nemmeno in grado di comporre (o qualsiasi effetto interessante). Ho anche questo problema in Xfce, dove ho disabilitato il compositing.

  2. Abilitazione della sincronizzazione con VBlank. Per abilitarlo, ho impostato l'opzione nvidia-settingse quindi l'avvio automatico come nvidia-settings -lcon i miei altri programmi di avvio automatico. Questo sembra funzionare, perché quando corro glxgears, ottengo:

    $ 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
    

    E quando controllo la frequenza di aggiornamento usando nvidia-settings:

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

    Tutto ciò suggerisce che la sincronizzazione con VBlank è abilitata. A quanto ho capito, questo è stato progettato proprio per smettere di lacerare, e molti problemi delle persone stanno persino ottenendo qualcosa di simile glxgearsalla produzione delle informazioni corrette. Non capisco perché non funzioni per me.

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

Esempio di strappo osservato ::lacerazione video


puoi incollare il tuo file xorg.conf per favore? Hai sperimentato Option "TripleBuffer" "1"nel tuo file xorg.conf?
Fossfreedom

Ho provato TripleBuffer; sembra aiutare un po ', ma non molto. Incollerò il mio xorg.conf.
Chan-Ho Suh,

Stai usando due monitor?
Alistair Buxton,

Lo stesso problema in 12.10 con Flash nel browser, anche se non posso strappare VLC che posso vedere, né quando trascino finestre in giro. Hai trovato una soluzione da allora?
Bleep Bloop,

Risposte:


18

Una cosa da provare potrebbe funzionare. Apri nvidia-settings e vai alla sezione powermizer. Scegli "Prestazioni massime" nel menu a discesa e dovresti vedere il tuo livello del powermizer saltare alla massima velocità.

Dopo averlo fatto, prova il video.

In passato, ho scoperto che vsync non funziona quando la scheda nvidia è impostata sul powermizer più lento.


Grazie! Questo ha funzionato per me usando il driver nvidia proprietario (310.19) su Arch Linux. Sto provando a risolverlo da un po 'di tempo ormai. Un problema così strano.
Reid,

È possibile controllare questa impostazione dalla riga di comando? In modo da poterlo abilitare quando avvio un lettore video (e disabilitarlo dopo la chiusura del lettore)?
Panzi,

1
Ah. nvidia-settings -a GPUPowerMizerMode=1lo imposta su performance e nvidia-settings -a GPUPowerMizerMode=2su auto.
Panzi,

11

Se si utilizzano due monitor, il driver nvidia può sincronizzarsi solo con il vblank di uno dei display a meno che non utilizzino esattamente la stessa frequenza di aggiornamento. E intendo esattamente . Ciò è effettivamente impossibile a meno che entrambi i monitor non siano dello stesso tipo. Nel caso in cui il driver nvidia si stia sincronizzando con il display errato (ad esempio, sincronizzandolo con il display integrato quando si desidera guardare un film sulla TV esterna) è possibile ignorare la scelta. Dalla documentazione del driver nvidia:

Quando si utilizza __GL_SYNC_TO_VBLANK con TwinView, OpenGL può sincronizzarsi solo con uno dei dispositivi di visualizzazione; ciò può causare la rottura del dispositivo di visualizzazione sul quale OpenGL non si sta sincronizzando. È possibile utilizzare la variabile d'ambiente __GL_SYNC_DISPLAY_DEVICE per specificare a quale dispositivo di visualizzazione OpenGL deve essere sincronizzato. È necessario impostare questa variabile di ambiente sul nome di un dispositivo di visualizzazione; ad esempio "CRT-1". Cerca la riga "Dispositivi di visualizzazione collegati:" nel tuo file di registro X per un elenco dei dispositivi di visualizzazione presenti e dei loro nomi.

Ho impostato questo in modo permanente in / etc / environment - basta aggiungere qualcosa del genere su una nuova riga:

__GL_SYNC_DISPLAY_DEVICE="DFP-0"


Ciao Alistair. Grazie per il suggerimento, ma utilizzo solo un display.
Chan-Ho Suh,

7

Anch'io soffrivo di strappi video nel mio processore Intel Sandy Bridge. Questo ha funzionato per me. Ho inserito le seguenti righe in "/ etc / environment" -

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

e ha funzionato. Premi Invio alla fine e copia incolla queste righe. Potrebbe essere necessario riavviare. Provalo.


2
Grazie per il suggerimento, ma queste sono variabili d'ambiente di Gnome3 (come quelle usate da Gnome Shell). Uso un window manager molto minimale, quindi questo non mi riguarda. Inoltre, non ho un processore Sandy Bridge.
Chan-Ho Suh,

Questa soluzione ha risolto il problema di lacerazione che avevo riscontrato sul desktop Cinnamon (Mutter window manager) e sui driver nvidia 313 il 13.04. Ci scusiamo per aver imbattuto un vecchio post, ma grazie.
askuhn,

4

Ecco come ho risolto i problemi di vsync per i video sul mio notebook ASUS K50IN con NVIDIA GeForce G102M . Sono consapevole che il tuo chilometraggio può variare poiché le carte sono diverse, ma puoi provarlo ... Il trucco per me era usare barebone MPlayer (ma non MPlayer2!). Non funziona con nessuno degli altri giocatori.

  1. Fai la solita magia compiz in ccsm

    • In Composito disattiva Rileva frequenza di aggiornamento e inserisci manualmente quella corrente del monitor.
    • Ho attivato 'Copia su Texture', non sono sicuro se ciò abbia aiutato o meno.
    • Sotto OpenGL: Filtro Tex - Ottima
    • La sincronizzazione con VBlank è attiva
    • Unity Plugin: (non sono sicuro che questo abbia aiutato qualcuno, ma presumibilmente migliora la velocità) Opacità del pannello - 1.0000, lo stesso per l'opacità del Launcher. Dash Blur - Statico
  2. Fai la solita magia delle impostazioni nvidia:

    • Abilita Sincronizza su VBlank in entrambe le impostazioni XVideo e OpenGL
    • Impostare Impostazioni immagine su Alta qualità in Impostazioni OpenGL
    • In Configurazione display impostare manualmente la risoluzione, quindi impostare la frequenza di aggiornamento da Auto alla frequenza di aggiornamento corrente.
  3. Installa mplayer e vdpau (NON mplayer2 !!! Questo è nuovo e sperimentale e, almeno per me, era in ritardo con VDPAU)

    • Pacchetti: mplayer libvdpau1 vdpau-va-driver
  4. Configurare MPlayer (ho provato anche gnome-mplayer, ma non ha lo stesso risultato che ho provato)

    • Apri il file ~ / .mplayer / config o crealo se non lo possiedi. Potrebbe anche essere necessario creare la cartella .mplayer . Dovrebbe contenere questo:
[default]
ao=pulse
vo=vdpau

Cambia ao in alsa se hai rimosso l'audio del polso.

Riavvia X eseguendo nuovamente il logout / in.

Provalo, YMMV come sempre. Ho scoperto che, specialmente nelle versioni non LTS o con driver beta, questo potrebbe non funzionare più a seconda del codec del video.


1

Questo ha funzionato per me su un driver ATI Radeon, quindi potrebbe funzionare per te:

Aggiungi un file di configurazione (ad esempio case /etc/X11/xorg.conf.d/20-nouveau.conf)

composto da questo:

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

EXA è il framework per la composizione di video; non sembra vsnc di default.

Potrebbe anche valere la pena provare diversi software (ad es. Vlc) per riprodurre video.


1
Come ho già detto nel mio post, il passaggio al driver predefinito non è un'opzione.
Chan-Ho Suh,

1

Non sono sicuro se questo ti supplirà, ma ha funzionato per me. Apri le impostazioni nvidia e modifica la frequenza da Auto a 60. E premi applica. Ciò ha risolto i miei problemi con lo strappo del video e lo sfarfallio generale del desktop. Purtroppo devo farlo ogni volta che riavvio.


1
Come ho spiegato nel mio post, la frequenza di aggiornamento del display è di 60 Hz. Per quanto riguarda il tuo problema, segui questa risposta .
Chan-Ho Suh,

1

Stavo riscontrando gli stessi problemi di lacrimazione del video. Nel mio caso ho osservato che lo smontaggio avviene solo in modalità a schermo intero. Il problema sembra essere il ridimensionamento del video a schermo intero. Ogni volta che le dimensioni originali del video riprodotto e i rapporti di risoluzione dello schermo non coincidono, il video viene ridotto. L'impostazione delle proporzioni in smplayer sulle proporzioni del display ha risolto il problema per me.

ad esempio, stavo riproducendo un video di dimensioni 1280x714 a schermo intero, nel video c'era uno strappo. Quando ho forzato le proporzioni del video a 16: 9, la riproduzione è stata fluida.

Devo notare che la causa principale del problema rimane lì ed è fastidiosa. Dal momento che le proporzioni non sono mantenute originali, ci saranno delle deformazioni nel video. Tuttavia è meglio guardare senza lacrime;)


1

Uso Ubuntu 12.04LTS 64 bit e ho un nvidia gtx 660ti.

Soffrivo di lacrimazione video per oltre un mese fino a quando non ho trovato una soluzione.

Apri le impostazioni del server nvidia x -> PowerMizer -> Impostazioni di PowerMizer (nella parte inferiore) e dove dice "Modalità preferita", modifica l'impostazione da Adattivo a Preferenza prestazioni massime.



0

Se non stai usando il doppio monitor c'è un'altra possibilità. Esistono due diversi tipi di sincronizzazione per vblank: uno per XVideo e uno per OpenGL. In nvidia-settings, uno si trova in "Impostazioni X Server XVideo" e l'altro in "OpenGL / Impostazioni". Quale in realtà influisce sul tuo software di riproduzione video può dipendere dal plug-in di output che sta utilizzando.


VLC ha opzioni per quelle due uscite e le ho provate entrambe.
Chan-Ho Suh,

0

Non sono sicuro dalla tua descrizione se stai effettivamente vedendo lacrimazione; normalmente, la lacerazione sembra che l'immagine sia divisa orizzontalmente in due o tre sezioni, con le parti non corrispondenti. Ciò accade perché la parte superiore dell'immagine e la parte inferiore non provengono dallo stesso fotogramma nel video. Wikipedia ha un buon esempio simulato di lacerazione dello schermo . Le sottili linee orizzontali sembrano diverse, più come pettinare artefatti da un deinterlacciamento scadente, anche se forse è difficile da descrivere.

Non si menziona alcun dettaglio del video che si sta tentando di guardare, come la sua risoluzione, codifica e se è interlacciato o progressivo e se il deinterlacciamento è attivato in VLC. Potrebbe anche valere la pena verificare se l'elaborazione video viene scaricata sulla GPU o se la CPU sta facendo tutto il lavoro. Hai confermato che puoi visualizzare correttamente lo stesso video su hardware diverso o su MacBook utilizzando OS X?

Dici di aver provato con la composizione disabilitata su XFCE, ma probabilmente non sarebbe male provare ad aggiungere:

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

nel tuo /etc/X11/xorg.conf solo per sicurezza. Inoltre, un altro suggerimento non menzionato finora è quello di aggiungere:

Option "UseEvents" "True"

alle sezioni Dispositivo o Schermo di xorg.conf.

AGGIORNARE:

Lo screenshot allegato mostra sicuramente lo strappo! Se il lettore si tiene comunque al passo con la decodifica del video (ovvero, senza rallentamenti della balbuzie, solo con lo strappo), probabilmente non importa se è la CPU o la GPU a fare la decodifica. VLC ha un'opzione nella pagina Impostazioni video in Preferenze per attivare e disattivare "Uscita video accelerata"; se è acceso, dovrebbe usare la GPU per decodificare. Se si attiva questa impostazione in VLC ed si esegue topin un terminale durante la riproduzione del video, si dovrebbe notare una differenza nell'uso della CPU tra le due impostazioni. Puoi anche provare a disattivare qualsiasi deinterlacciamento in VLC per vedere se questo fa la differenza.

Ho altri due suggerimenti:

Ovviamente non vedo nulla di sbagliato nel tuo xorg.conf, ma puoi ricontrollare che sia la sincronizzazione con le impostazioni di vblank (su X Server XVideo Settings e OpenGL Settings) sia memorizzata correttamente in .nvidia-settings-rc. Alcune persone eseguono nvidia-settings come root o usano gksudo (quindi può aggiornare /etc/X11/xorg.conf), ma ciò può comportare la memorizzazione delle impostazioni in /root/.nvidia-settings-rc anziché ~ /. nvidia-settings-RC. Dovrebbe raccogliere la tua copia, ma per evitare ogni dubbio, dovresti controllare entrambe le impostazioni di vblank quando esegui nvidia-settings come te; non dimenticare di premere "Salva configurazione corrente" nella pagina inferiore delle impostazioni. Se corri:

nvidia-settings -q=XVideoTextureSyncToVBlank -q=SyncToVBlank

quindi dovresti vedere che entrambe le impostazioni sono impostate su 1. Probabilmente dovresti anche verificare che comunque il caricamento automatico delle impostazioni funzioni riavviando ed eseguendo nuovamente il comando sopra.

L'altra cosa che potresti provare sarebbe l'aggiornamento / downgrade dei tuoi driver nvidia. In precedenza ho sperimentato lacerazioni con alcuni aggiornamenti minori della versione del driver; ci sono sicuramente versioni "buone" e "cattive" dei driver nvidia e le ultime non sono sempre le migliori. Puoi provare ad aggiornare usando X-swat PPA:

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

E puoi provare il downgrade a una versione precedente disponibile per 12.04:

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

a seconda che sia installato amd64 o i386. Fare clic sul numero di versione a destra che si desidera provare, scaricare il file .deb e quindi installare con:

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

Ad esempio, a causa di un bug nvidia non correlato, ho dovuto scaricare questo:

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

a partire dal

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

e installato usando:

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

Un altro piccolo punto: un'altra risposta menziona il cambiamento della frequenza di aggiornamento da Auto a 60Hz e dici che è già impostato su 60Hz. Tuttavia, il tuo xorg.conf allegato ha nvidia-auto-select in metamodes (nella sezione Screen), il che suggerisce che non è stato risolto. Tuttavia, la definizione del tuo monitor offre solo 60.0, quindi forse non ha importanza. Potrebbe essere interessante eseguire il backup e spostare xorg.conf e rieseguire nvidia-xconfig e nvidia-settings per vedere se si ottiene una configurazione diversa.


Ciao David. Ho caricato un'immagine della mia presunta lacrimazione :-) Per favore dimmi se corrisponde a "lacrimazione". Succede praticamente su qualsiasi video che guardo, quindi non pensavo che valesse la pena entrare nei dettagli. Hai qualche suggerimento su cosa testare specificamente? Ho provato quelle opzioni (e successivamente le ho rimosse), ma forse c'è qualche combinazione che dovrei provare? Se riesci a guardare il mio xorg.conf incollato, fammi sapere se c'è qualcosa che sembra non funzionare. Come posso verificare se la GPU non sta funzionando? Infine, sì, gli stessi video non hanno mai avuto problemi con OS X sullo stesso computer.
Chan-Ho Suh,

Il driver nouveau non sembra avere lo stesso problema. L'unica cosa che sono stato in grado di diagnosticare che sembra diverso è che con nouveau l'FPS è di circa 600 senza alcuna configurazione aggiuntiva richiesta da me.
Chan-Ho Suh,

Sì, sembra strappare. Mi dispiace dubitare :-)
David Edwards,

Ho aggiunto ulteriori suggerimenti in base al tuo feedback.
David Edwards,

Sfortunatamente, niente fortuna. Penso che forse l'unica cosa da fare sia aspettare che Nvidia migliori il supporto per la GeForce 320M, anche se mi chiedo perché Nouveau non abbia problemi.
Chan-Ho Suh,

0

Oltre al post precedente di David: se vuoi installare i driver proprietari NVidia più recenti usando X-swat PPA, puoi anche aggiungerlo ai tuoi sorgenti apt:

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

Questo installerà l'ultima versione e ti terrà aggiornato sulle loro consegne.


0

Mi dispiace che questa risposta sia in qualche modo per openSuSE, non Ubuntu, ma alla fine l'ho fatta funzionare con queste modifiche,

  • Disattiva temporaneamente gli effetti di composizione / finestra (alt + maiusc + f12 in openSuSE)
  • Utilizzare VLC con l'impostazione "Video" impostata su "Uscita video OpenGL (sperimentale)". Anche "Uscita video accelerata (overlay)" è verificato per me. Sto usando VLC 2.1.1 se è importante.
  • Impostare le impostazioni di PowerMizer su performance, come nella risposta di mjnichol
  • Impostare le impostazioni di OpenGL su alto, come nella risposta di Amir Dizdarević

Spero che sia d'aiuto! Immagino che ci siano alcune impostazioni per farlo funzionare con il compositing, ma consiglio almeno di disabilitare il compositing per i test. La mia configurazione è un monitor 4K e una scheda grafica GTX 650.


0

È possibile risolvere questo problema per VLC modificando l'uscita video su "OpenGL GLX".


0

Sto eseguendo il sistema operativo elementare 64-bit Luna (basato su Ubuntu 12.04 LTS) e ho avuto lo stesso problema. Cercando in giro, ho finalmente trovato un metodo che FUNZIONA e ovviamente include la soluzione "Impostazioni Powermizer per prestazioni", come molti altri hanno già detto.

Il problema è che dopo il riavvio queste impostazioni vengono ripristinate sull'impostazione "Auto" predefinita e apparentemente l'applicazione Nvidia-Settings non salva correttamente le nuove impostazioni di Powermizer. DA NON PREOCCUPARSI!!!

SEGUI SOLO LE ISTRUZIONI SOTTO, È COSÌ SEMPLICE:

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

Come dice l'articolo, crea un'applicazione di avvio e sei a posto !!!! FIDATI DI ME, FUNZIONA!!! Mille grazie ad Aquablue per aver pubblicato questo e, naturalmente, a Mike di Nvidia Customer Care che ha fornito la soluzione !!!

Cordiali saluti, ho un Phenom II X4, 8 GB di RAM DDR3, Corsair SSD, GTX 650, Elementary Luna 64-bit.


0

Potrei scegliere la finestra con il cursore, spostare la finestra e questo ha riparato lo strappo. Quindi sembra che alcuni problemi di callback in X.

Per me la correzione di vlc era:

vlc -> strumenti -> preferenze -> video -> nel menu a discesa 'output' scegli x11 video output(XCB)


-2

Sembra che tu stia eseguendo un gestore di finestre leggero (presumibilmente openbox). In tal caso, è possibile che tu stia utilizzando xcompmgr come gestore composito per ottenere effetti desktop come ombre, trasparenze, ecc. Nel mio caso, la disattivazione di xcompmgr ha risolto lo stesso problema: strappare mentre si guardano video, specialmente quelli in HD (che richiede molta CPU). Apparentemente, lo strappo si è verificato a causa di un bug in xcompmgr, che è un progetto a lungo abbandonato. Per disattivare xcompmgr è possibile eseguire "killall xcompmgr". Dovrebbe funzionare. Spero che sia d'aiuto! Saludos! Pablo.


Non sembra che tu abbia letto il mio post con molta attenzione. Per inciso, non dovresti uccidere xcompmgr. Basta non avviarlo in primo luogo.
Chan-Ho Suh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.