• Cómo integrar una NVIDIA Pascal en Ubuntu Unity

    por  • 24 febrero, 2017 • MuyLinux • 0 Comentarios

    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.

    Artículo original: Cómo integrar una NVIDIA Pascal en Ubuntu Unity

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *