¿Cómo detengo el video rasgado? (Controlador de utilería Nvidia, administrador de ventanas sin composición)

35

Tengo ese problema que aparentemente afecta a muchos que usan el controlador propietario de Nvidia:

Desgarro de video : líneas horizontales finas (generalmente cerca de la parte superior de mi pantalla) cuando hay mucha panorámica o acción en el video.

(Nota: volver al controlador nouveau predeterminado no es una opción, ya que su administración de energía aparentemente inexistente agota mi batería varias veces más rápido)

He intentado Totem, Parole y VLC, y todos ellos tienen problemas. El mejor resultado ha sido usarlo X11 outputen VLC, pero todavía hay desgarros con una acción relativamente moderada.

Hardware: MacBook Air 3,2, que tiene una Nvidia GeForce 320M.

Hay dos soluciones comunes para el desgarro con los controladores de utilería de Nvidia:

  1. Desactive la composición , ya que los controladores propietarios de Nvidia no suelen jugar bien con los administradores de ventanas de composición en Linux (Compiz es una excepción que conozco). Pero uso un administrador de ventanas extremadamente liviano (administrador de ventanas impresionante) que ni siquiera es capaz de componer (o cualquier efecto genial). También tengo este problema en Xfce, donde tengo la composición deshabilitada.

  2. Habilitando la sincronización con VBlank. Para habilitar esto, configuro la opción nvidia-settingsy luego la autoinicio como nvidia-settings -lcon mis otros programas de autoinicio. Esto parece funcionar, porque cuando corro glxgears, obtengo:

    $ 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
    

    Y cuando verifico la frecuencia de actualización usando nvidia-settings:

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

    Todo esto sugiere que la sincronización con VBlank está habilitada. Según tengo entendido, esto está diseñado precisamente para detener el desgarro, y el problema de muchas personas es incluso obtener algo como glxgearsgenerar la información correcta. No entiendo por qué no me funciona.

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

Ejemplo de desgarro observado :rasgado de video

Chan-Ho Suh
fuente
¿puedes pegar.com tu archivo xorg.conf por favor? ¿Experimentó con Option "TripleBuffer" "1"su archivo xorg.conf?
fossfreedom
He intentado TripleBuffer; parece ayudar un poco, pero no mucho. Voy a pegar mi xorg.conf.
Chan-Ho Suh
¿Estás usando monitores duales?
Alistair Buxton
El mismo problema en 12.10 con Flash en el navegador, aunque no veo rasgaduras en VLC que puedo ver, ni al arrastrar ventanas. ¿Encontró una solución desde entonces?
Bleep Bloop el

Respuestas:

18

Una cosa para probar que puede funcionar. Abra nvidia-settings y vaya a la sección powermizer. Elija "Máximo rendimiento" en el menú desplegable, y debería ver su nivel de powermizer saltar a la velocidad más rápida.

Una vez que hayas hecho eso, prueba el video.

En el pasado, descubrí que vsync no funciona cuando la tarjeta nvidia está en la configuración de powermizer más lenta.

mjnichol
fuente
¡Gracias! Esto funcionó para mí usando el controlador nvidia patentado (310.19) en Arch Linux. He estado tratando de resolver esto por bastante tiempo. Un tema tan extraño.
Reid
¿Es posible controlar esta configuración desde la línea de comando? ¿Para poder habilitarlo cuando inicio un reproductor de video (y deshabilitarlo después de que el reproductor esté cerrado)?
panzi
1
Ah nvidia-settings -a GPUPowerMizerMode=1lo establece en rendimiento y nvidia-settings -a GPUPowerMizerMode=2en automático.
panzi
11

Si está utilizando monitores duales, el controlador nvidia solo puede sincronizarse con el vblank de una de las pantallas a menos que utilicen exactamente la misma frecuencia de actualización. Y quiero decir exactamente . Esto es efectivamente imposible a menos que ambos monitores sean exactamente del mismo tipo. En caso de que el controlador nvidia se esté sincronizando con la pantalla incorrecta (por ejemplo, sincronizando con la pantalla integrada cuando desea ver una película en el televisor externo), puede anular su elección. De la documentación del controlador nvidia:

Al usar __GL_SYNC_TO_VBLANK con TwinView, OpenGL solo puede sincronizarse con uno de los dispositivos de visualización; Esto puede causar daños en el dispositivo de visualización en el que OpenGL no se sincroniza. Puede usar la variable de entorno __GL_SYNC_DISPLAY_DEVICE para especificar a qué dispositivo de visualización debe sincronizarse OpenGL. Debe configurar esta variable de entorno con el nombre de un dispositivo de visualización; por ejemplo "CRT-1". Busque la línea "Dispositivo (s) de pantalla conectado (s):" en su archivo de registro X para obtener una lista de los dispositivos de pantalla presentes y sus nombres.

Lo configuré permanentemente en / etc / environment, solo agregue algo como esto en una nueva línea:

__GL_SYNC_DISPLAY_DEVICE="DFP-0"

Alistair Buxton
fuente
Hola alistair Gracias por la sugerencia, pero uso solo una pantalla.
Chan-Ho Suh
7

Yo también sufría de roturas de video en mi procesador Intel Sandy Bridge. Esto funcionó para mí. Puse las siguientes líneas en "/ etc / environment" -

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

Y funcionó. Presione enter al final y copie y pegue estas líneas. Puede requerir reiniciar. Intentalo.

BRKsays
fuente
2
Gracias por la sugerencia, pero estas son variables de entorno de Gnome3 (como las utilizadas por Gnome Shell). Utilizo un administrador de ventanas muy mínimo, por lo que esto no se aplica a mí. Además, no tengo un procesador Sandy Bridge.
Chan-Ho Suh
Esta solución solucionó el problema de rotura que tenía en el escritorio Cinnamon (gestor de ventanas Mutter) y los controladores nvidia 313 en 13.04. Perdón por tropezar con una publicación anterior, pero gracias.
askuhn
4

Así es como resolví los problemas de vsync para video en mi portátil ASUS K50IN con la NVIDIA GeForce G102M . Soy consciente de que su millaje puede variar ya que las tarjetas son diferentes, pero puede probarlo ... El truco para mí fue usar MPlayer sin conexión (¡pero no MPlayer2!). No funciona con ninguno de los otros jugadores.

  1. Haz la magia de compiz habitual en ccsm

    • En Compuesto, apague Detectar frecuencia de actualización e ingrese la actual de su monitor manualmente.
    • Encendí 'Copiar a textura', no estoy seguro de si eso ayudó o no.
    • Debajo de OpenGL: Tex. Filter - Best
    • La sincronización con VBlank está activada
    • Complemento de Unity: (no estoy seguro de si esto ayudó, pero supuestamente mejora la velocidad) Opacidad del Panel - 1.0000, lo mismo para la Opacidad del Lanzador. Dash Blur - Estático
  2. Haz la magia habitual de configuración de nvidia:

    • Habilite la sincronización con VBlank en la configuración de XVideo y OpenGL
    • Establezca la configuración de imagen en Alta calidad en la configuración de OpenGL
    • En Configuración de pantalla, configure su resolución manualmente, luego configure su frecuencia de actualización de Automático a su frecuencia de actualización actual.
  3. Instale mplayer y vdpau (NO mplayer2 !!! Esto es nuevo y experimental y, al menos para mí, fue lento con VDPAU)

    • Paquetes: mplayer libvdpau1 vdpau-va-driver
  4. Configure MPlayer (también probé gnome-mplayer, pero no tiene el mismo resultado tan difícil como lo intenté)

    • Abra el archivo ~ / .mplayer / config o créelo si no lo tiene. Es posible que también deba crear la carpeta .mplayer . Debe contener esto:
[default]
ao=pulse
vo=vdpau

Cambie ao a alsa si eliminó el audio de pulso.

Reinicie X cerrando sesión / nuevamente.

Pruébalo, YMMV como siempre. He descubierto que, especialmente en versiones que no son LTS o con controladores beta, es posible que esto ya no funcione dependiendo del códec del video.

Amir Dizdarević
fuente
1

Esto funcionó para mí en un controlador ATI radeon, por lo que podría funcionar para usted:

Agregue un archivo de configuración (por ejemplo, case /etc/X11/xorg.conf.d/20-nouveau.conf)

que consiste en esto:

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

EXA es el marco para componer video; no parece vsnc por defecto.

También podría valer la pena probar un software diferente (por ejemplo, vlc) para reproducir video.

Mark Williams
fuente
1
Como mencioné en mi publicación, cambiar al controlador predeterminado no es una opción.
Chan-Ho Suh
1

No estoy seguro si esto te ayudará, pero funcionó para mí. Abra nvidia-settings y cambie la frecuencia de Auto a 60. Y presione aplicar. Esto resolvió mis problemas con la rotura de video y el parpadeo general del escritorio. Lamentablemente tengo que hacer esto cada vez que reinicio.

vicentec
fuente
1
Como expliqué en mi publicación, mi frecuencia de actualización de pantalla es de 60 Hz. En cuanto a su problema, siga esta respuesta .
Chan-Ho Suh
1

Estaba experimentando los mismos problemas de lágrimas de video. En mi caso, observé que el desmontaje ocurre solo en modo de pantalla completa. El problema parece estar en escalar el video a pantalla completa. Siempre que el tamaño original del video reproducido y las relaciones de resolución de la pantalla no coincidan, el video se desgarrará. Establecer la relación de aspecto en smplayer para la relación de aspecto de la pantalla solucionó el problema para mí.

por ejemplo, estaba reproduciendo un video de tamaño 1280x714 en pantalla completa, había una rotura en el video. Cuando forcé la relación de aspecto del video a 16: 9, la reproducción fue suave.

Tengo que tener en cuenta que la causa raíz del problema permanece allí y es molesta. Dado que la relación de aspecto no se mantiene original, habrá alguna deformación en el video. Sin embargo, es mejor mirar sin lágrimas;)

focknvidia
fuente
1

Yo uso Ubuntu 12.04LTS 64bit y tengo un nvidia gtx 660ti.

Estuve sufriendo video rasgado durante más de un mes hasta que encontré una solución.

Abra la configuración del servidor nvidia x -> PowerMizer -> Configuración de PowerMizer (cerca de la parte inferior), y donde dice "Modo preferido", cambie la configuración de Adaptable a Preferir rendimiento máximo.

usuario144925
fuente
1

La actualización a la versión 319 desde PPA resolvió el problema:

Si después del arranque, se ejecuta en modo a prueba de fallos, entra en recuperación y ejecuta sudo nvidia-xconfig. Feliz video jugando!

BrozzSama
fuente
0

Si no está utilizando el monitor dual, hay otra posibilidad. Hay dos tipos diferentes de sincronización con vblank: uno para XVideo y otro para OpenGL. En nvidia-settings, uno está en "X Server XVideo Settings" y el otro está en "OpenGL / Settings". El que realmente afecta su software de reproducción de video puede depender del complemento de salida que esté utilizando.

Alistair Buxton
fuente
VLC tiene opciones para esas dos salidas y las he probado en ambas.
Chan-Ho Suh
0

No estoy seguro de su descripción si realmente está viendo lagrimeo; normalmente, el rasgado parece que la imagen se divide horizontalmente en dos o tres secciones, con las partes que no coinciden. Esto sucede porque la parte superior de la imagen y la parte inferior no provienen del mismo cuadro en el video. Wikipedia tiene un buen ejemplo simulado de rasgado de pantalla . Las líneas horizontales finas suenan diferentes, más como peinar artefactos de un desentrelazado deficiente, aunque quizás sea difícil de describir.

No mencionas ningún detalle del video que estás tratando de ver, como su resolución, codificación y si está entrelazado o progresivo, y si tienes el desentrelazado activado en VLC. También podría valer la pena verificar si el procesamiento de video se está descargando a GPU , o si la CPU está haciendo todo el trabajo. ¿Ha confirmado que puede ver con éxito el mismo video en un hardware diferente o en el MacBook con OS X?

Dices que has intentado con la composición deshabilitada en XFCE, pero probablemente no estaría de más intentar agregar:

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

a su /etc/X11/xorg.conf solo para estar seguro. Además, otra sugerencia no mencionada hasta ahora es agregar:

Option "UseEvents" "True"

a las secciones Dispositivo o Pantalla de su xorg.conf.

ACTUALIZAR:

¡La captura de pantalla adjunta definitivamente muestra desgarros! Si el reproductor se mantiene al día con la decodificación del video (es decir, sin tartamudeo, solo el desgarro), entonces probablemente no importa si es la CPU o la GPU la decodificación. VLC tiene una opción en la página de configuración de video en Preferencias para activar y desactivar "Salida de video acelerada"; si está activado, debería estar usando la GPU para decodificar. Si alterna esa configuración en VLC y ejecutatop en una terminal mientras reproduce el video, debería ver una diferencia en el uso de la CPU entre las dos configuraciones. También puede intentar desactivar cualquier desentrelazado en VLC para ver si eso hace la diferencia.

Tengo otras dos sugerencias:

No veo nada obviamente incorrecto con su xorg.conf, pero puede verificar que ambas configuraciones de sincronización con vblank (en la Configuración de video X Server XV y la Configuración de OpenGL) estén almacenadas correctamente en .nvidia-settings-rc. Algunas personas ejecutan nvidia-settings como root o usan gksudo (para que pueda actualizar /etc/X11/xorg.conf), pero esto puede hacer que la configuración se almacene en /root/.nvidia-settings-rc en lugar de ~ /. nvidia-settings-rc. Debería estar recogiendo su propia copia, pero para evitar cualquier duda, debe verificar tanto la configuración de vblank cuando ejecute nvidia-settings como usted; no olvide presionar "Guardar configuración actual" en la página inferior de configuración. Si tu corres:

nvidia-settings -q=XVideoTextureSyncToVBlank -q=SyncToVBlank

entonces debería ver que ambas configuraciones están establecidas en 1. Probablemente también debería verificar que, sin embargo, la carga automática de la configuración funciona reiniciando y ejecutando el comando anterior nuevamente.

La otra cosa que podría intentar sería actualizar / degradar sus controladores nvidia. He experimentado desgarros con algunas actualizaciones menores de la versión del controlador antes; definitivamente hay versiones "buenas" y "malas" de los controladores de nvidia y las últimas no siempre son las mejores. Puede intentar actualizar usando el X-swat PPA:

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

Y puede intentar degradar a una versión anterior disponible para 12.04:

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

dependiendo de si tiene instalado amd64 o i386. Haga clic en el número de versión a la derecha que desea probar, descargue el archivo .deb e instálelo con:

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

Por ejemplo, debido a un error nvidia no relacionado, tuve que descargar esto:

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

desde

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

y lo instalé usando:

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

Otro pequeño punto: otra respuesta menciona el cambio de la frecuencia de actualización de Auto a 60Hz, y usted dice que ya está configurado en 60Hz. Sin embargo, su xorg.conf adjunto tiene nvidia-auto-select en metamodes (en la sección Pantalla), lo que sugiere que no está arreglado. Sin embargo, la definición de su monitor solo ofrece 60.0, por lo que tal vez esto no tenga consecuencias. Puede ser interesante hacer una copia de seguridad y mover su xorg.conf, y vuelva a ejecutar nvidia-xconfig y nvidia-settings para ver si obtiene una configuración diferente.

David Edwards
fuente
Hola David. He subido una imagen de mi supuesto desgarro :-) Por favor, dígame si coincide con "desgarro". Sucede casi en cualquier video que veo, así que no pensé que valiera la pena entrar en detalles. ¿Tiene alguna sugerencia sobre qué probar específicamente? He probado esas opciones (y luego las eliminé), pero ¿quizás haya alguna combinación que deba probar? Si puedes mirar mi xorg.conf pegado, avísame si parece que algo anda mal. ¿Cómo verifico si la GPU no está haciendo el trabajo? Finalmente, sí, los mismos videos nunca tienen un problema en OS X en la misma máquina.
Chan-Ho Suh
El nuevo controlador no parece tener el mismo problema. Lo único que pude diagnosticar que parece diferente es que con nouveau el FPS es de aproximadamente 600 sin necesidad de ninguna configuración adicional.
Chan-Ho Suh
Sí, eso parece rasgado. Lamento dudar :-)
David Edwards
He agregado más sugerencias basadas en sus comentarios.
David Edwards
Lamentablemente no hubo suerte. Creo que quizás lo único que hay que hacer es esperar a que Nvidia mejore el soporte para la GeForce 320M, aunque me pregunto por qué Nouveau no tiene problemas.
Chan-Ho Suh
0

Además de la publicación anterior de David: si desea instalar los últimos controladores propietarios de NVidia utilizando X-swat PPA, también puede agregarlo a sus fuentes de apt:

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

Esto instalará la última versión y lo mantendrá actualizado con respecto a sus entregas.

Yanok
fuente
0

Lo siento, esta respuesta es algo para openSuSE, no Ubuntu, pero finalmente lo conseguí trabajando con estos cambios,

  • Deshabilite la composición / efectos de ventana temporalmente (alt + shift + f12 en openSuSE)
  • Use VLC con la configuración "Video" establecida en "Salida de video OpenGL (experimental)". "Salida de video acelerada (Superposición)" también está marcada para mí. Estoy usando VLC 2.1.1 si es importante.
  • Establezca la configuración de PowerMizer en rendimiento, como en la respuesta de mjnichol
  • Establezca la configuración de OpenGL en alta, como en la respuesta de Amir Dizdarević

¡Espero eso ayude! Me imagino que hay alguna configuración para que funcione con la composición, pero recomiendo al menos deshabilitar la composición para las pruebas. Mi configuración es un monitor 4K y una tarjeta gráfica GTX 650.

gatoatigrado
fuente
0

Puede arreglar esto para VLC cambiando la salida de video a "OpenGL GLX".

usuario279078
fuente
0

Estoy ejecutando Elementary OS Luna de 64 bits (basado en Ubuntu 12.04 LTS) y tuve el mismo problema. Al buscar, finalmente encontré un método que FUNCIONA y obviamente incluye la solución "Configuración de Powermizer para el rendimiento", como ya han dicho muchas otras personas.

El problema es que después de reiniciar, estas configuraciones se restauran a la configuración predeterminada "Auto" y aparentemente la aplicación Nvidia-Settings no guarda correctamente las nuevas configuraciones de Powermizer. ¡¡¡NO ES PARA PREOCUPARSE!!!

SIGA LAS INSTRUCCIONES A CONTINUACIÓN, ES MUY SIMPLE:

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

Como dice el artículo, crea una aplicación de inicio y listo. ¡¡¡CONFÍA EN MÍ, FUNCIONA!!! ¡Muchas gracias a Aquablue por publicar esto y, por supuesto, a Mike de Atención al Cliente de Nvidia que proporcionó la solución!

FYI, tengo un Phenom II X4, 8GB DDR3 RAM, Corsair SSD, GTX 650, Elementary Luna de 64 bits.

Spyros P.
fuente
0

Pude elegir la ventana con el cursor, mover la ventana y solucionó el desgarro. Parece que hay algunos problemas de devolución de llamada en X.

Para mí, la solución vlc fue:

vlc -> herramientas -> preferencias -> video -> en el menú desplegable 'salida' elija x11 video output(XCB)

abr
fuente
-2

Parece que está ejecutando un administrador de ventanas liviano (presumiblemente openbox). Si ese es el caso, es posible que esté utilizando xcompmgr como administrador compuesto para obtener efectos de escritorio como sombras, transparencias, etc. HD (que son intensivos en CPU). Aparentemente, se produjo un desgarro debido a un error en xcompmgr, que es un proyecto abandonado hace mucho tiempo. Para desactivar xcompmgr puede ejecutar "killall xcompmgr". Eso debería funcionar. ¡Espero eso ayude! Saludos! Pablo

Usemos Linux
fuente
No parece que leas mi publicación con mucho cuidado. Por cierto, no deberías tener que matar xcompmgr. Simplemente no lo comience en primer lugar.
Chan-Ho Suh