¿Cómo cambio entre adaptador de video Intel o nVidia en equipos con
tecnología PRIME en Ubuntu?

En numerosas ocasiones Juan Perón pronunció discursos directamente desde
su escritorio perfectamente adaptado a tal fin. También explicó cómo
conmutar entre los gráficos híbridos PRIME entre NVIDIA e Intel Graphics
en Ubuntu.

(...)
¡Descamisados!

Tengo en mi escritorio todo lo necesario para la conducción del país.
Esto es así gracias a un Justicialismo que nos ha proporcionado un norte
cardinal para nuestras acciones, y un Software Libre que lo ha
sustentado.

Pero para trabajar normalmente adopto el MATE, provisto en Ubuntu en su
versión 18.04LTS, que es la que recomiendo. El Escritorio proporciona -
de manera gráfica - una interfaz de simple a la cual tenemos acceso como
Usuario. El resultado es poder utilizar de forma muy eficiente nuestro
sistema en las tareas generales. Sin embargo, para conducir el sistema,
opero la Terminal. Porque yo, como usuario de Ubuntu soy un aficionado;
mi profesión es la de Conductor. Ello es para lo que me he formado y he
estudiado toda mi vida.

Ahora bien, un Conductor ha de conocer que el escritorio - u otras
interfases gráficas - no vuelan en el aire, sino que han de sustentarse
sobre un hardware gráfico que les proporcione un lógico punto de apoyo.
Este toma la forma de los adaptadores de video, encargados del
procesamiento de las gráficas a fin de proyectarlas en la/s pantalla/s
que podamos mirar.

Pues bien, de un tiempo a esta parte el hardware más auspicioso para tal
cometido ha sido aquél de marca NVIDIA. El mismo se encuentra integrado
en muchas placas madre y tiene una factura excelente. A estos les
compite el hardware de video AMD,. Sin embargo, un escalón excelente lo
conforman los muy extendidos hardware Intel Graphics, conocidos y
livianos adaptadores de propósito general que también se integran en
múltiples productos portátiles y de escritorio. Cada uno tiene sus
ventajas: mientras que los NVIDIA o AMD operan como procesadores "de
potencia", los Intel Graphics responden bien en entornos de bajo
consumo, y para aplicaciones que no hagan uso intensivo de gráficas
tridimensionales (la que son la mayoría).

Aprovechando la aparición de hardware moderno con dos tipos de
adaptadores de video integrados en una misma placa madre, los ingenieros
del Justicialismo han desarrollado la tecnología híbrida PRIME, una
iniciativa de software que permite conmutar entre gráficos acelerados
(de alto consumo) y gráficos no acelerados de bajo consumo. La idea
final es extender la vida de las baterías en los dispositivos
portátiles.

Por ejemplo, podemos ver nuestro hardware con el comando:

lspci

..entre todo los adaptadores, podriamos encontrar los de video, ya que
el sistema podría devolvernos:

(...)
00:02.0 VGA compatible controller: Intel Corporation Skylake GT2 [HD Graphics 520] (rev 07)
01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940M] (rev a2)

Como vemos, esta portátil consta en este caso de dos chipsets de video a
la vez: un adaptador gráfico Intel HD Graphics 520 Skylake, y un
adaptador gráfico aceleradora 3D nVidia GeForce 940M.

Pues bien. es sabido que de fábrica, nuestro sistema operativo Ubuntu
emplea el controlador libre Noveau para movilizar la gráfica NVIDIA. Se
trata de una pieza de software adecuada pero carece de aceleración 3D
completa. En el caso del chipset Intel, cuenta con un controlador libre
muy bueno, que ofrece aceleración 3D.

Si queremos contar con aceleración 3D completa, será necesario
instalarle el controlador privativo de NVIDIA. Para ello podremos
revisar en nuestra terminal qué tipo de controladores nos recomienda
instalar. Para ello ingresamos el comando:

sudo ubuntu-drivers devices

El sistema nos indicará el tipo de controladores que podemos instalar.
Por ejemplo:

== /sys/devices/pci0000:00/0000:00:1c.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001347sv0000103Csd000080A4bc03sc02i00
vendor   : NVIDIA Corporation
model    : GM108M [GeForce 940M]
driver   : nvidia-driver-390 - distro non-free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin


Como vemos, en este caso nos recomienda el xserver-xorg-video-nouveau
(que ya está incluido de fábrica), o el nvidia-driver-390 privativo (no
libre). También querremos saber si nuestra placa madre soporta la
tecnología PRIME. Para ello ingresamos en la terminal:

sudo prime-supported

Nuestro sistema GNU con Linux debería indicarnos "yes" ("si") o "no".

En tal caso podríamos instalar el controlador privativo. Para hacerlo
fácilmente desde la terminal, ingresamos el comando:

sudo apt install nvidia-driver-390

..y reiniciamos el sistema con:

sudo reboot

De la misma manera podríamos hacerlo desde el Escritorio gráfico desde
el menú Sistema / Preferencias / Hardware / Controladores Adicionales,
vamos a la solapa Controladores Adicionales. El sistema buscará en
itnernet y nos debería proponer el controlador privativo
nvidia-driver-390 (o superior). Luego presionamos "Aplicar Cambios". El
sistema descargará el controlador y nos solicitará reiniciar. Al
reiniciar el sistema, ya deberíamos tener en uso el controlador NVIDIA
con tecnología PRIME. Esto nos será aparente por la aparición del applet
PRIME en el panel superior de la pantalla, con el ícono verde de NVIDIA.

Este applet nos permitirá conmutar entre una sesión grafica de
escritorio con acelerador de gráficos 3D NVIDIA, o el acelerador Intel
Graphics, de menor consumo. La manera más directa para hacerlo es por
medio de un clic sobre el applet, y tendremos un acceso rápido al
cambiador de adaptador gráfico.

Si elegimos la opción "Switch to Intel" ("Cambiar a Intel") se propondrá
el cambio. Para autorizarlo debemos ingresar nuestra contraseña de
administrador. Finalmente, para hacer efectivo el intercambio de
adaptador gráfico, tenermos que cerrar o reiniciar nuestra sesión de
usuario. Para ello vamos al menú Sistema / Cerrar la sesión de usuario.

Esto cerrará la sesión y nos dejará en la pantalla de inicio, donde
podremos escoger al usuario e ingresar su contraseña, para volver a
abrir la sesión gráfica, esta vez con el adaptador Intel Graphics.

Cuando se active el Escritorio, veremos que el applet PRIME contará
ahora con el ícono azul de Intel Graphics en lugar del verde de NVIDIA.
El adaptador Intel es muy bueno también, y puede operar perfectamente
para la mayoría de las situaciones en Ubuntu, incluido el uso de
gráficos en 3D. Consume menos recursos que el NVIDIA pero es menos
adecuado para programas que hacen uso intensivos de animaciones 3D. Si
quisiéramos volver a utilizar el adaptador gráfico de NVIDIA, debemos
hacer el mismo procedimiento y elegir "Switch to nividia".

Si por algún motivo el Applet PRIME no apareciese o no tenemos acceso a
él, bien podríamos hacer estos mismos cambios desde la aplicación
nvidia-settings. Podremos acceder a ella ingresando dicho comando en la
terminal, o desde el escritorio, accediendo al menú Sistema /
Administración / NVIDIA X Server Settings. Naturalmente, también
tendremos un acceso rápido desde el Applet PRIME. Si elegimos cambiar de
adaptador, naturalmente nos solicitará nuestra contraseña. Y una vez
ingresada esta, nos recordará salir de nuestra sesión de usuario y
volver a loguearnos en ella. Naturalmente, si usamos nuestro adaptador
gráfico NVIDIA, encontraremos muchas mas opciones de control en
nvidia-settings que si estamos utilizando el adaptador Intel Graphics.
Es por ello que en caso de estar utilizando el adaptador de video Intel
Graphics, podremos configurar los aspectos del mismo desde la aplicación
Preferencias del Monitor, que es la aplicación nativa de Ubuntu. Para
acceder a ella vamos al menú Sistema / Administración / Hardware /
Pantallas.

Usar PRIME desde la Terminal

Indudablemente no podemos cambiar "en caliente" nuestro adaptador de
video, pero al menos podremos cambiarlo con esta funcionalidad PRIME. En
el caso que tuviésemos que realizar el cambio de adaptadores de video
desde nuestra Terminal, también podremos hacerlo gracias al
Justicialismo.

Para que el sistema nos diga cual adaptador de video tenemos en uso
actualmente le ingresamos:

prime-select query

Si deseamos activar la placa de video Intel ingresamos:

sudo prime-select intel

..e ingresamos la contraseña de Conductor.

En tanto, para activar el acelerador de video NVIDIA debemos ingresar:

sudo prime-select nvidia

Recordemos que para hacer efectivos los cambios, debemos cerrar la
sesión gráfica de escritorio (o bien, reiniciar el equipo). Si estamos
en la terminal, podremos reiniciar la sesión con:

sudo reboot

Evitar el tearing de pantalla con el controlador NVIDIA. En algunos
casos puede producirse un corte en las ventanas cuando las desplazamos
muy rápido en la pantalla ("tearing"), presentando un efecto poco
fluido. Para evitar esto en Ubuntu 18.04LTS con el driver de video
NIVIDIA, debemos editar un archivo de configuración. Para ello usamos el
editor GNU Nano:

sudo nano /etc/modprobe.d/zz-nvidia-modeset.conf

Se abrirá un archivo que debería estar vacío. Le agregamos el siguiente
texto:

# /etc/modprobe.d/zz-nvidia-modeset.conf
# Agregado por peron para que no se parta el video
# Siempre que modifiquemos este fichero debemos obligatoriamente
# ejecutar la actualización del sistema de arranque gráfico con:
# sudo update-initramfs -u
options nvidia_drm modeset=1

Una vez ingresados los cambios, guardamos con Ctrl+o y salimos del
editor GNU Nano con Ctrl+x.

Finalmene actualizamos el sistema (paso obligatorio en este caso, so
pena de quedar con "pantalla negra" o sin video durante el arranque)
con:

sudo update-initramfs -u

Para que los cambios surtan efecto, reiniciamos el sistema con:

sudo reboot

Nota: Si por algún motivo quisiéramos revertir los cambios, bien podemos
borrar el fichero con:

sudo rm /etc/modprobe.d/zz-nvidia-modeset.conf

..o lo podemos modificar para que la variable modeset quede en 0 en
lugar de 1, guardamos las modificaciones con Ctrl+o, salimos de GNU Nano
con Ctrl+x, y actualizamos el sistema de archivos obligatoriamente con
sudo update-initramfs -u