MuyLinux Eduardo Medina  

Cómo integrar una NVIDIA Pascal en Ubuntu Unity

Cómo integrar una NVIDIA Pascal en Ubuntu Unity

Hoy os vamos a mostrar cómo configurar una NVIDIA Pascal (GTX 1000) para que funcione sin problemas en Ubuntu Unity (aunque esto no quiere decir que lo explicado aquí no pueda funcionar con otras generaciones de GPU NVIDIA). Este tutorial va dirigido sobre todo a gamers (a quienes casi siempre les beneficia tener el driver más nuevo) y personas que usan una gráfica muy reciente que no está bien soportada por el driver ofrecido desde los repositorios de Canonical.

Por unas razones u otras, Unity no es muy amigable con los drivers que no son suministrados por Canonical. Con Mesa, si se instala la versión más reciente a través de Xorg-Edgers, el usuario podrá ver cómo el stack gráfico pierde estabilidad, aunque por suerte sin afectar a la usabilidad. Con el blob de NVIDIA la situación es algo peor, ya que si se instala una versión procedente de GPU Drivers el usuario podrá ver cómo el tearing puede terminar apoderándose del entorno, ofreciendo una experiencia realmente desagradable.

¿Cómo corregir los graves problemas de tearing que pueden terminar provocando las versiones del driver de NVIDIA que no son suministradas por Canonical? Es lo que intentaremos explicar a través de este especial.

Instalación del Gestor de configuración CompizConfig

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

Configuración de Compiz y NVIDIA para evitar el tearing

Una vez instalado el Gestor de configuración CompizConfig, cambiaremos la configuración de las secciones OpenGL y Composite.

Secciones a modificar en el Gestor de configuración CompizConfig (Compiz) para mejorar la compatibilidad con NVIDIA

La sección de OpenGL la dejamos de la siguiente manera, inhabilitando todos los checkbox y configurando el Filtro de Textura a Rápido.

Cómo configurar la sección de OpenGL en Compiz

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.

Cómo configurar la sección de Composite en Compiz

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).

Configurar OpenGL en el panel de NVIDIA Linux

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 extra para los gamers

Sí, hemos resuelto el problema a nivel del escritorio, pero, ¿qué pasa con los juegos? Este paso también puede ser prescindible según los juegos que se use, sin embargo, es importante tener en cuenta que la sincronización vertical no funciona bien en algunos juegos, como Pillars of Eternity.

Lo que vamos a hacer es forzar el Full Composite Pipeline desde el mismo servidor Xorg para paliar este problema, algo para lo cual necesitamos crear el fichero xorg.conf.

sudo nvidia-xconfig

Tras la creación del fichero procedemos a abrirlo:

sudo nano /etc/X11/xorg.conf

Después hay que añadir la siguiente línea en la sección Screen:

Option "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

El código del fichero tendría que ser parecido o igual al siguiente. Resaltamos la línea a añadir en la sección Screen, que es a fin de cuentas lo único que realmente cuenta en este tutorial.

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 378.09 (buildmeister@swio-display-x86-rhel47-04) Sat Jan 14 22:12:34 PST 2017

Section "ServerLayout"
 Identifier "Layout0"
 Screen 0 "Screen0"
 InputDevice "Keyboard0" "CoreKeyboard"
 InputDevice "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
 # generated from default
 Identifier "Mouse0"
 Driver "mouse"
 Option "Protocol" "auto"
 Option "Device" "/dev/psaux"
 Option "Emulate3Buttons" "no"
 Option "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
 # generated from default
 Identifier "Keyboard0"
 Driver "kbd"
EndSection

Section "Monitor"
 Identifier "Monitor0"
 VendorName "Unknown"
 ModelName "Unknown"
 HorizSync 28.0 - 33.0
 VertRefresh 43.0 - 72.0
 Option "DPMS"
EndSection

Section "Device"
 Identifier "Device0"
 Driver "nvidia"
 VendorName "NVIDIA Corporation"
EndSection

Section "Screen"
 Identifier "Screen0"
 Device "Device0"
 Monitor "Monitor0"
 DefaultDepth 24
 SubSection "Display"
 Depth 24
 EndSubSection
 Option "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
EndSection

Como “cortesía” de la comunidad de ArchLinux, también se puede probar la siguiente configuración en la sección Screen del fichero /etc/X11/xorg.conf, añadiendo el Triple Buffering (TripleBuffer) e inhabilitando el protocolo indirecto de GLX (AllowIndirectGLXProtocol):

Section "Screen"
 Identifier "Screen0"
 Device "Device0"
 Monitor "Monitor0"
 DefaultDepth 24
 SubSection "Display"
 Depth 24
 EndSubSection
 Option "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
 Option "AllowIndirectGLXProtocol" "off"
 Option "TripleBuffer" "on"
EndSection

¿Qué pasa si mi Ubuntu no reconoce el fichero xorg.conf?

Sin embargo, posiblemente en versiones más recientes de Ubuntu el fichero xorg.conf está ignorado, así que como alternativa se puede recurrir al siguiente comando desde consola:

nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

O también desde el panel de control de NVIDIA en la sección X Server Display Configuration, desplegando las opciones avanzadas y pulsar Aplicar (Apply) tras seleccionar la opción Force Full Composition Pipeline.

Force Full Composition Pipeline desde el panel grafico de NVIDIA Linux

Pero como este método requiere ser realizado cada vez que se inicia sesión, lo que haremos será coger el comando de consola mostrado antes e introducirlo en un script con permisos de ejecución:

nano ~/.nvidiaextra.sh

Después de crear y abrir el fichero, introducimos en él el comando de consola:

nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

Guardamos los cambios, salimos del fichero y le otorgamos permisos de ejecución:

chmod a+x ~/.nvidiaextra.sh

Ahora toca abrir la aplicación Aplicaciones de inicio en Ubuntu.

Abrir Aplicaciones de inicio en Ubuntu

Luego pulsar sobre el botón Añadir, establecer un nombre para el proceso que ejecutará el script en el inicio de sesión y pulsar sobre el botón Examinar.

Establecer una aplicacion de inicio

Dirigirse a la ubicación del script mostrando los ficheros ocultos con el botón secundario del ratón, seleccionarlo y pulsar sobre el botón Añadir.

Seleccionar el fichero correspondiente a la aplicacion de inicio contra el tearing en NVIDIA

Tras esto, con solo reiniciar sesión se tendría que activar el Full Composite Pipeline.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.