Cómo integrar una NVIDIA Pascal en Ubuntu Unity (simplificado)
Hoy vamos a presentar una versión simplificada del tutorial que publicamos la semana pasada. Sí, en esta ocasión también vamos a explicar cómo eliminar el tearing producido cuando se combina Ubuntu Unity con una NVIDIA Pascal (aunque esto no quiere decir que la solución expuesta aquí no pueda funcionar en otras generaciones de GPU de la misma marca).
Reconozco que el tutorial original ha resultado ser complejo para el usuario común, sin embargo, hay que decir que muchos parecen no habérselo leído con el detenimiento necesario. No, el tutorial anterior no había que hacerlo entero, sino que estaba por niveles. El apartado “Configuración de Compiz y NVIDIA para evitar el tearing” hace referencia al rendimiento a nivel de escritorio, o sea, que los usuarios que no se dedican a jugar no necesitan hacer el resto de pasos. En “Un extra para los gamers” se intenta proporcionar una solución definitiva contra el tearing en los juegos, pudiendo prescindir de la sincronización vertical al estar activada la característica Full Composite Pipeline de NVIDIA. Por su parte, el apartado “¿Qué pasa si mi Ubuntu no reconoce el fichero xorg.conf?” es una alternativa al anterior, ya que en versiones recientes de Xorg el fichero xorg.conf es ignorado. En resumidas cuentas, si el apartado “Un extra para los gamers” funciona no hace falta hacer el “¿Qué pasa si mi Ubuntu no reconoce el fichero xorg.conf?”.
Pese a todo, también tengo que pedir disculpas porque la publicación resultante quedó lejos de los objetivos iniciales. La intención era hacer algo sencillo para el usuario común, pero tengo que reconocer que el resultado final fue demasiado complejo y ni a mí me convenció.
Por eso vamos a publicar esta “rectificación” para ofrecer una solución más sencilla y comprensible para el usuario común, y, ¡sorpresa!, se puede prescindir totalmente de la consola. Por otro lado, recordamos que este tutorial va dirigido sobre todo a gamers y personas que usan una gráfica reciente de NVIDIA que no está soportada por el driver ofrecido por Canonical (como por ejemplo la GTX 1050 que uso ahora), teniendo que recurrir a la PPA GPU Drivers. Las soluciones relacionadas con Xorg y el software de NVIDIA también pueden ser aplicadas a cualquier entorno de escritorio, salvo KDE, que tiene una solución particular en este sentido.
Acabando con el tearing presente por Compiz
El primer paso es instalar el Gestor de configuración CompizConfig o CompizConfig Settings Manager desde el gestor de paquetes. Aquí, con el fin de ofrecer una solución genérica, mostraremos la instalación mediante consola.
sudo apt-get install compizconfig-settings-manager
Una vez instalado el Gestor de configuración CompizConfig, cambiaremos la configuración de las secciones OpenGL y Composite.
La sección de OpenGL la dejamos de la siguiente manera, inhabilitando todos los checkbox y configurando el Filtro de Textura a Rápido.
Mientras que la sección Composite tiene que quedar de la siguiente manera, destacando la activación de la opción Forzar el pintado de salida independiente.
Por su parte, en el panel de control de NVIDIA hay que dirigirse a la sección OpenGL Settings, que tiene que quedar de la siguiente manera, destacando la Configuración de Imagen (Image Settings) a Alto Rendimiento (High Performance).
Con estas configuraciones, todas realizadas a través de interfaz gráfica, el usuario tendría que poder usar el driver oficial de NVIDIA que crea conveniente con Unity 7.
Un paso más allá: arreglando los problemas de sincronización vertical y tearing presentes en algunos juegos
Como bien habréis podido observar, los primeros pasos han sido copiados y pegados del artículo original, y es que aquí no vamos a exponer nada nuevo, simplemente ofrecer una solución más simple y comprensible para el usuario común tomando el material ya publicado.
Con solo realizar el paso anterior ya se tendría que tener un desempeño totalmente limpio con Unity 7 sobre NVIDIA Pascal, incluso se puede jugar perfectamente a la mayoría de juegos, solo necesitando de tener activada la sincronización vertical a través de las opciones gráficas. Sin embargo, hay juegos en los cuales la sincronización vertical no funciona correctamente sobre NVIDIA, siendo Pillars of Eternity el caso que conozco. Estos problemas no son únicos de GNU/Linux, ya que en Windows también se pueden presentar cuando se ejecuta un juego optimizado para GPU AMD sobre NVIDIA, algo que se soluciona forzando la sincronización vertical desde el panel de NVIDIA.
¿Qué pasa cuando la sincronización vertical falla en un juego que se ejecuta en GNU/Linux? En primer lugar hay que inhabilitar dicha característica y cerrar la aplicación. Luego hay que abrir el panel de control de NVIDIA para GNU/Linux, dirigirse a la sección X Server Display Configuration y luego hacer clic sobre el botón Advanced.
Después hay que marcar la casilla correspondiente a Force Full Composite Pipeline y hacer clic en Apply.
Con esto ya delegamos la resolución de los problemas de tearing y sincronización vertical en Full Composition Pipeline de NVIDIA, por lo que ya no hace falta activar la sincronización vertical en los juegos. Es más, tener esa característica activada en los juegos junto con Full Composition Pipeline puede hasta generar conflictos.
En caso de querer cambiar de juego por otro en el cual la sincronización vertical sí funciona correctamente, solo hay que repetir los pasos correspondientes al panel de control de NVIDIA, pero desmarcando las opciones de Force Full Composition Pipeline y Full Composition Pipeline y pulsando luego el botón Apply para inhabilitar la característica.
Tirón de orejas para NVIDIA
El problema de la solución propuesta es que el panel de control de NVIDIA solo permite guardar en el fichero /etc/X11/xorg.conf, el cual es ignorado en versiones recientes del servidor gráfico. ¿Qué quiere decir esto? Pues que en un futuro próximo todos los sistemas operativos GNU/Linux lo ignorarán (y todo esto sin contar Wayland y Mir) y será inútil guardar las configuraciones ahí, aunque no sea el caso particular de Ubuntu 16.04.
Por eso mismo, y aprovechando la publicación de esta “rectificación”, solo me queda exigir a NVIDIA que haga lo que tiene que hacer, y es desarrollar un panel de control decente para nuestro sistema, o que al menos se pueda guardar la configuración del Full Composition Pipeline en el espacio de usuario, algo que no solo ayudará a los usuarios comunes, sino que facilitará enormemente la vida a los “linuxgamers” al poder prescindir de la sincronización vertical en todos los juegos.