¿Por qué el video rasgado es un problema en Linux?

101

He usado muchas variantes de Linux (principalmente derivados de Debian) durante más de una década. Un problema que no he visto resuelto satisfactoriamente es el problema del desgarro horizontal, o Vsync no se implementa correctamente.

Digo esto porque utilizo 5 distribuciones diferentes en 4 computadoras diferentes con varios monitores y tarjetas gráficas Nvidia / AMD / ATI / Intel; cada vez, ha habido un problema con el video rasgado incluso con un ligero movimiento.

Este es un gran problema, especialmente porque incluso Windows XP no tiene estos problemas en el hardware moderno. Si alguien va a usar Linux para algo, ¿por qué querrían que se muestren defectos constantes al hacer algo que no sea CLI?

Supongo que pocos desarrolladores conocen este problema o se preocupan lo suficiente como para solucionarlo. He probado casi todos los compositores, y generalmente lo mejor que pueden hacer es minimizar el problema pero no eliminarlo. ¿No debería ser tan simple como sincronizar con la frecuencia de actualización del monitor? ¿Existe alguna política entre la comunidad OSS que impida que alguien cometa código que solucione esto?

Cada vez que solicito ayuda sobre este tema en el pasado, se trata como un caso marginal (lo cual me resulta difícil de creer porque se da la cantidad de veces que he replicado el problema) u obtengo soluciones potenciales que a lo más minimiza el desgarro.

Ravenstine
fuente
2
No mencionas qué DE utilizas. KDE ha estado bien con lagrimeo durante un año más o menos.
Sparhawk
1
¿Cómo podría uno replicar fácilmente el problema? ¿En una computadora Debian / Ubuntu / Mint?
Xen2050
50
Este XKCD parece encajar muy bien aquí ...
Angew
Mi experiencia con el desgarro ha sido completamente diferente. Soy un juego muy feliz y veo películas en Linux. Steam realmente ha hecho de Linux una plataforma viable para grandes juegos. He estado jugando a Witcher 2 y Talos Principle últimamente, y no he visto ningún desgarro en unas 50 horas de juego. Esto es con una tarjeta Nvidia con controladores propietarios en Arch. Estoy de acuerdo con Xen2050 en que esta pregunta sería más útil si se proporcionaran especificaciones exactas para sus compilaciones. No estoy negando que haya un problema, solo he tenido una muy buena experiencia.
laberinto
Con la composición de Nvidia se resolvió el problema para mí, cuando solía usar Nvidia en 2007. Sin embargo, no en pantalla completa porque las ventanas de pantalla completa apagan el compositor, supongo que ejecutarás un juego OpenGL, creo. Con Intel, ¿ha intentado configurar la Sección "Dispositivo" Opción "TearFree" "verdadero" en X? Duplica el uso de RAM de video, pero creo que funcionará.
Zan Lynx

Respuestas:

92

Todo esto se debe al hecho de que el servidor X está desactualizado, no es adecuado para el hardware de gráficos actual y básicamente toda la comunicación directa con la tarjeta de video se realiza como una extensión ("parche") sobre el antiguo núcleo hinchado. El servidor X no proporciona medios de sincronización integrados entre el usuario que representa la ventana y la pantalla que muestra una ventana, por lo que el contenido cambia en el medio de la representación. Este es uno de los problemas más conocidos del servidor X (tiene muchos, el modelo completo de lo que el servidor hace y está desactualizado: manejo de eventos en subventanas, metadatos sobre ventanas, primitivas gráficas para dibujo directo ...). Los kits de herramientas de widgets en su mayoría quieren pasar por alto todo esto, pero el desgarro sigue siendo un problema porque no hay un mecanismo para manejar eso. Surgen problemas adicionales cuando tiene varias tarjetas que requieren controladores diferentes,

Wayland, que intenta reemplazar X sin entusiasmo, admite una sincronización pedante vsync en su núcleo, y se anuncia que tiene cada cuadro exactamente perfecto.

Si buscas rápidamente en Google "desgarro de video de Wayland", encontrarás más información sobre todo.

Orión
fuente
38
+1para "X es el problema, eche un vistazo a Wayland". Muy en serio, es la respuesta correcta.
HalosGhost
2
@HalosGhost wayland evangelismo sobre la marcha :) todavía no hay soporte de sesión de red?
kagali-san
3
@ Kagali-san No dije que Wayland fuera perfecto (no lo es). Pero definitivamente es mejor que X. :)
HalosGhost
8
@ kagali-san: Weston ha fusionado su backend RDP hace solo un año, si encuentra que de alguna manera es relevante para una pregunta sobre la rotura de videos.
Grawity
3
@orion: y gracias a ti esta página ahora es el resultado número 1 para wayland video tearing: P
Tobia Tesan
16

El desgarro de la pantalla aparece principalmente por dos razones: los controladores que aún no están allí y la falta de sincronización con ciertos administradores de ventanas.

En cuanto a los controladores, tanto los controladores gratuitos como los propietarios admiten la composición de desgarro libre (nvidia y amd). Tenga en cuenta que, por ejemplo, habilitar un escritorio sin rasgaduras en el catalizador ( fglrx) puede provocar la caída del cuadro y los retrasos, por lo que generalmente está deshabilitado de forma predeterminada. En cuanto al controlador abierto, vsync debería estar habilitado de forma predeterminada. Por lo tanto, el problema de rotura de pantalla se puede resolver probando diferentes controladores y configurándolos.

En cuanto a los administradores de ventanas, se sabe que Openbox, Awesome y otros wms livianos no son compatibles con la función de desgarro. XFCE (xfwm, para ser específicos) lo ha corregido en versiones recientes, 4.11 / 12 ahora tiene Vsync. Los principales entornos de escritorio tampoco tienen problemas con el desgarro, incluidos GNOME, KDE, Unity y Cinnamon.

Si aún experimenta el desgarro de la pantalla, su opción es probar con otro administrador de composición como Compton o Kwin. Kwin es el administrador de ventanas de KDE y tengo experiencia en el uso de kwin en XFCE cuando no era compatible con vsync y funcionaba muy bien.

Entonces, la solución aquí es la experimentación, lo que se rompe en una combinación de controlador / wm puede funcionar en otra. Creo que la situación mejorará pronto, ya que los controladores de código abierto son cada vez más avanzados y cambiar a wayland puede eliminar viejos problemas con Xorg.

kirill-a
fuente
55
Realmente no. KDE (con Kwin u otro compositor) todavía llora con NVidia o Intel.
Ivan
1
Openbox, etc. funciona sin rasgaduras: simplemente tiene que ejecutar un compositor separado, por ejemplo, compton funciona de maravilla.
wingedsubmariner
1
@wingedsubmariner, cuando ustedes se refieren a openbox, ¿también se refieren a fluxbox?
nass
Además, es extremadamente útil que tenga en cuenta cuál es el estado de WM en diferentes entornos de ventana.
nass
@nass Absolutamente. El administrador de ventanas nunca es un factor limitante.
wingedsubmariner
14

Si está utilizando un controlador nvidia> = 365.20, intente habilitar la opción "Forzar tubería de composición completa" en nvidia-settings.

ingrese la descripción de la imagen aquí

FuzzyTree
fuente
nVidia Quadro en un Lenovo W520, Fedora 25 y esto funcionó :)
Jerther
44
Además, si no tiene esa opción, haga clic en "Configuración avanzada" en la parte inferior de la ventana y aparecerá. ¿Por qué esta "tubería de composición completa" no está habilitada de forma predeterminada? ..
Rast
1
@Rast Porque solía tener algunos problemas de rendimiento.
Ruslan
Por cierto, parece que al menos los controladores Intel también tienen una TearFreeopción que puede poner en la Devicesección correspondiente . Lo acabo de probar y da resultados muy similares a los de la tubería de composición completa de nvidia.
Ruslan
Parece que no puedo obtener la configuración para guardar en los reinicios. Intenté crear un archivo ~ / .xinitrc y puse "nvidia-settings --load-config-only &. / Etc / X11 / xinit / xinitrc", pero eso no parecía funcionar
FragmentalStew
9

Tuve un fuerte desgarro aquí y ahora está resuelto.

Después de leer esta ( maravillosa explicación ) de cómo funciona un servidor Xorg, me di cuenta de que el servidor X pinta las actualizaciones de la ventana directamente en la tarjeta de memoria en cualquier momento al azar, a menos que use un administrador de ventanas habilitado para la composición.

Cuando se habilita la composición, el administrador de ventanas reúne todos los cambios de los diferentes búferes de memoria de la ventana, crea una imagen resultante para toda la pantalla y la descarga en la tarjeta de visualización de una sola vez.

La mayoría de las distribuciones modernas tienen un administrador de ventanas de composición. KWin para KDE, Mutter para Gnome, Muffin para Cinnamon, Marco para Mate, xfwm para XFCE, etc. Sin embargo, la composición podría deshabilitarse para ahorrar recursos.

En mi caso, la composición estaba deshabilitada en KDE4. Una vez habilitado, el desgarro se fue. EDITAR : También necesitaba cambiar en las opciones de KWin la estrategia VSync de contenido de pantalla Automático a Reutilizar para deshacerme del desgarro tal como se explica en este informe de error específico de kwin .

Las opciones del controlador también pueden ser un factor. En mi caso, las opciones predeterminadas funcionan bien. Arch Wiki tiene una excelente documentación sobre las opciones para diferentes tarjetas de visualización, como las tarjetas Intel o NVIDIA .

Para verificar si una opción está habilitada en su configuración actual de xorg, puede verificar el registro. Por ejemplo, para verificar si DRI está habilitado:

cat /var/log/Xorg.0.log | grep DRI
David
fuente
1
En XFCE (en Xubuntu 16.04), la composición está habilitada de manera predeterminada, pero la sincronización con el espacio en blanco vertical no lo está . Use el xfwm4-tweaks-settingscomando para mostrar la aplicación tweaker y en la pestaña Compositor puede encontrar la opción anterior. Encenderlo marcó una gran diferencia, y puede verificarse aquí: vsynctester.com/index.html (active / desactive la función mientras se muestra la animación). No es perfecto, aunque faltan algunos fotogramas, pero es mucho mejor que cuando está apagado.
karatedog
1

La solución está aquí: Linux Mint 17.3 MATE ahora viene con Compton .

Simplemente vaya a Desktop Settings-> Windows-> Window Managery elija Metacity + Compton. Eso es.

Tengo una tarjeta de video AMD y funciona de fábrica para el controlador de código abierto.

Para el controlador AMD patentado, cuando los videos HTML5 se maximizan a pantalla completa, es posible que vea un color azul que llene toda la pantalla. Para solucionar esto, cree y chmod +xla secuencia de comandos a continuación:

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

Ejecútelo cada vez que reinicie el sistema, pero no intente agregarlo, ya Startup Applicationsque podría interrumpir el inicio por algún motivo.

Constantina
fuente
0

En Peppermint Linux, vaya a Preferencias> Centro de control de Peppermint, seleccione Efectos de escritorio y habilite "Habilitar efectos de escritorio" y "Sincronizar dibujo en el espacio vertical".

Stefan Reich
fuente
0

Estoy usando Linux Mint XFCE y este problema me frustró durante bastante tiempo. Encontré la solución para mi computadora portátil con la tarjeta gráfica integrada Intel y resolvió el problema de desgarro . Para mi escritorio con tarjeta NVIDIA, ese truco no puede funcionar. Pero acabo de encontrar al culpable.

Tengo un aumento de rendimiento inmediato cuando desactivo la composición de ventanas. Aquí está cómo puedes hacer eso:

Vaya a Todos los ajustes / Ajustes del Administrador de ventanas / Compositor y desactive todo eso.

Tenga en cuenta que esto es específico de la distribución y el mío es Mint con XFCE y no tengo idea de cómo encontrar algo similar en otras distribuciones.

Dejan Petrovic
fuente