Se acaba de anunciar una nueva versión de Mesa, un desarrollo del que hablamos muy a menudo, pero sobre el que solemos entrar poco en detalles. Este software ha ganado mucho protagonismo en los últimos tiempos por la aparición de juegos last gen para GNU/Linux, por eso vamos a dedicar este artículo para explicar qué es y qué aporta.
¿Qué es Mesa? Básicamente, se puede definir como un conjunto de software para el procesamiento de gráficos avanzados, teniendo como objetivo funcionar tanto sobre GPU dedicadas como en los aceleradores gráficos integrados en las CPU (como las IGP de Intel y las APU de AMD). Incluye drivers e implementaciones de distintas API, entre las cuales están OpenGL, OpenGL ES, OpenCL, OpenMAX, VDPAU, VA API, XvMC y Vulkan. Sin embargo, Mesa no compone todo el stack gráfico de GNU/Linux, ya que los drivers para las GPU están incluidos en el kernel.
Una breve historia sobre Mesa
Mesa es un desarrollo muy veterano que se inició en 1993 con el objetivo de ofrecer una implementación de OpenGL para GNU/Linux. Aunque en los tiempos actuales sigue manteniendo ese objetivo, ha ido creciendo hasta convertirse en mucho más que eso, abarcando una mayor cantidad de API.
Hoy en día compañías como Valve y Feral Interactive están contribuyendo para mejorar el rendimiento de Mesa para los videojuegos, y lejos de ser solo gestos para quedar bien de cara a la galería, todos esos esfuerzos se están transformando en resultados cada vez más notables para los usuarios, que ven cómo poco a poco se está abriendo una alternativa a NVIDIA para jugar con nuestro sistema favorito. Obviamente, la compañía de Santa Clara es consciente de esto y ha movido ficha para evitar una posible fuga de usuarios.
La constante evolución de Mesa ha hecho que sus desarrolladores tomaran la decisión de cambiar la numeración, basándose en el año en lugar de seguir siendo secuencial. Esto hizo que se pasara de la versión 13 (que iba secuencial) a la 17.0 (basada en el año). A partir de 2018 veremos Mesa 18 y así sucesivamente. Por otro lado, esto también puede ayudar de cara al marketing, ya que un número más grande da la sensación de ser más moderno.
En lo que se refiere a la cantidad de código, la Release Candidate de Mesa 17.3 había acumulado hasta el pasado mes octubre contando toda la trayectoria del proyecto con 1.627.353 de líneas de código detectadas, 309.918 comentarios y 285.753 líneas en blanco, los cuales proceden de más de 100.000 commits de Git. Estos números muestran la envergadura y repercusión de este software, resultando crítico para los usuarios de GNU/Linux de escritorio, quienes con el paso de los años han ido migrando hacia entornos más pesados y con mayores requerimientos a nivel de aceleración 3D.
Qué representa Mesa para Intel
Intel ha sido el fabricante de GPU más apegado a Mesa, de hecho, salvo los chips PowerVR, los cuales fueron desarrollados por Imagination Technologies, el soporte oficial para los gráficos de Intel siempre ha estado incluido en el kernel y Mesa, siendo sus drivers Open Source.
El gigante del chip tiene hasta una herramienta llamada Intel Graphics Update Tool que permite actualizar tanto Mesa como los drivers para GPU del kernel en algunas distribuciones. La implementación de Vulkan para Intel, ANV, también está incluida en Mesa y es oficial.
La suma de estas circunstancias son las que han convertido a Intel en el fabricante de GPU que mejor integración ha ofrecido con GNU/Linux, aunque por suerte la competencia se está poniendo las pilas en este aspecto.
Qué representa Mesa para NVIDIA
De los tres grandes fabricantes de GPU, NVIDIA es la que menos colabora en la mejora de Mesa, ya que centra sus esfuerzos en su driver privativo. De hecho en los últimos tiempos se puede intuir un posible “pique” tecnológico entre Mesa y el blob de NVIDIA, con lanzamientos casi en paralelo.
Sin embargo, hace años la compañía de Santa Clara aflojó un poco la cuerda y ha liberado documentación y ciertos componentes para ayudar en el desarrollo de Nouveau, el driver libre para gráficas NVIDIA incluido en el kernel Linux. Aunque es un aporte que ayuda a realizar un uso básico del ordenador, la realidad es que para cualquier tarea exigente se requiere usar el driver oficial, además de que el soporte para las nuevas generaciones de GPU suele tardar en llegar a Nouveau.
¿Qué pasa con Mesa si instalo el driver oficial de NVIDIA? El driver oficial de NVIDIA se coloca encima y sustituye el soporte ofrecido por Mesa. Tradicionalmente las GPU de esta compañía han sido de largo las que más potencia gráfica han otorgado a GNU/Linux, aunque siempre a costa de ciertos problemas de integración que están siendo solventados poco a poco.
Tras todo lo dicho, lo más preocupante es la carencia de una implementación Open Source de Vulkan para Mesa, lo que podría dejar el soporte para NVIDIA mediante Mesa contra las cuerdas en un futuro muy lejano.
Qué representa Mesa para AMD
Si Intel apuesta totalmente por el Open Source y NVIDIA casi todo a lo privativo, AMD hace algo curioso, quedar a caballo entre ambas propuestas, apoyándolas en paralelo actualmente.
Desde hace muchos años AMD ha tenido dos ramas: una privativa, sostenida primero por Catalyst y luego por AMDGPU-PRO; y otra abierta, la cual está sostenida por Radeon (para las GPU más antiguas) y AMDGPU (para las GPU más recientes). Como consecuencia de esta política, también existen dos implementaciones de Vulkan para las GPU de esta compañía: la incluida en AMDGPU-PRO, que es privativa y solo está disponible para un número limitado de sistemas; y RADV, que es Open Source, está incluida en Mesa y es de origen comunitario.
Aunque los desarrollos privativos siguen estando vivos y con apoyo por parte de la compañía, también es cierto que AMD dio un brusco giro a favor del Open Source a través de la iniciativa GPUOpen, que supuso todo un revulsivo para el soporte mediante Mesa, abriendo la puerta a la posibilidad de ejecutar juegos last gen con total garantías utilizando un driver libre.
Hace tan solo tres años AMD no era una opción para los usuarios de GNU/Linux, dejando todo el terreno despejado a Intel en temas de integración y a NVIDIA en temas de rendimiento. Afortunadamente, desde el comienzo de GPUOpen el desempeño de las GPU AMD han mejorando de forma abismal en GNU/Linux, hasta el extremo de empezar a acercarse a lo que puede ofrecer NVIDIA.
¿Y yo, qué versión de Mesa estoy usando?
Para saber la versión de Mesa que se está utilizando (para eso es preferible evitar el uso del driver oficial de NVIDIA) en primer lugar hay que instalar el siguiente paquete según la distribución (adicionalmente Ubuntu ofrece una PPA para Mesa con las últimas versiones estables):
- Ubuntu y Debian: mesa-utils
- Fedora: glx-utils
- openSUSE: Mesa-demo-x
Después hay que ejecutar el siguiente comando:
glxinfo | grep Mesa
¿Qué trae de nuevo Mesa 17.3?
Para terminar, no podíamos dejar de mencionar lo más relevante de Mesa 17.3.0, una nueva versión mayor que según los datos consta de 2.700 commits procedentes de 120 desarrolladores.
Sobre las características, se puede destacar un acercamiento a OpenGL 4.6 por parte de los drivers de las tres grandes marcas de GPU, incluido Nouveau, mediante la inclusión de nuevas extensiones; la adición de nuevas extensiones (aunque diferentes para cada uno) de Vulkan que son soportadas tanto en ANV como RADV; el driver de etnativ ya tiene soporte completo de OpenGL 2.1, pudiendo esto impactar en Librem 5; RadeonSI (el driver de Mesa para AMD) ha incluido soporte experimental para NIR; mejoras y optimizaciones para glthread; y la librería libdxtn ha sido fusionada en Mesa tras expirar la patente de S3TC.
Los que quieran conocer todos los detalles sobre Mesa 17.3.0 pueden consultar las notas de lanzamiento publicadas en el sitio web oficial del proyecto.