El driver de código abierto de AMD va camino de ocupar 4 millones de líneas en Linux
AMDGPU ha sido el revulsivo, el pilar y la revolución que la pila gráfica estándar de Linux necesitaba para competir con lo ofrecido por NVIDIA a través de su driver privativo. Mucho han cambiado las cosas desde que AMD lo anunciara en 2016, hasta el extremo que actualmente las gráficas Radeon rinden igual que sus rivales verdes a la hora de ejecutar videojuegos.
El desarrollo de AMDGPU, lejos de disminuir, ha ido a más, sobre todo viendo que es uno de los principales motores de la Steam Deck, la consola/mini-PC de Valve que funciona con SteamOS 3 por defecto. Esto ha repercutido en que se sigan aspectos como la cantidad de líneas de código del driver, que ha ido aumentando a buena velocidad con el paso del tiempo.
Si hace dos años anunciamos que AMDGPU representaba el 10% del código de Linux, acaparando 2,71 millones de líneas de código de las aproximadamente 27,81 millones que tenía el kernel por entonces, ahora nos hacemos eco de que el driver Open Source de AMD ha superado las tres millones de líneas en Linux 5.17 y apunta a quedarse cerca de las cuatro millones para la siguiente versión del kernel.
AMDGPU, en el actual estado de Linux 5.17, ocupa unas 3,38 millones de líneas, aunque el dato es un tanto engañoso, ya que de esa cantidad, 2,91 millones de líneas contienen código real, 339.000 son líneas de comentarios y 130.000 son líneas en blanco. A pesar de ello, eso no anula el hecho de que estamos ante el driver que más ocupa a nivel de código del kernel Linux, más viendo que i915 (Intel) “solo” acapara unas 341.000 líneas. Todos esos datos quedan dentro de los 30,63 millones de líneas del kernel, de las cuales 22,7 millones son código real, 3,84 millones comentarios y 4,03 líneas en blanco.
Pero el crecimiento de AMDGPU, lejos de detenerse, irá todavía a más en Linux 5.18, ocupando en estos momentos 3,82 de líneas, de las cuales 3,29 son código real, 391.000 comentarios y 136.000 líneas en blanco.
El rápido crecimiento de AMDGPU, como ya expusimos en su momento, responde a que buena parte del código está en ficheros de cabecera (header) autogenerados para la documentación interna y los registros de datos. Afortunadamente, el compilador elimina los ficheros de cabecera que no son utilizados, por lo que el driver resultante no debería de ser, al menos sobre el papel, bloatware. Esos ficheros de cabecera son importantes, sobre todo porque aportan documentación que puede ser útil para el desarrollo del driver.
Además de un aumento en la cantidad de líneas de código, AMDGPU no para de ganar nuevas características con cada lanzamiento del kernel, una línea de desarrollo que con la Steam Deck, sobre todo si tiene éxito con SteamOS, se verá reforzada. Por ejemplo, para Linux 5.18 se espera que el modo FreeSync esté habilitado por defecto, aunque el uso de la tecnología de tasa de refresco variable también depende de que sea implementada en el compositor empleado para el despliegue de los gráficos (Mutter, Kwin, Sway… ).
Como vemos, el driver Open Source de AMD para Linux está en buena forma, a pesar de depender de un firmware privativo que se encuentra incluido en la línea oficial del kernel. Sin embargo, el gigante rojo, que en los últimos años ha gozado de una posición relativamente cómoda, tendrá que lidiar en los próximos meses con la aparición de las gráficas dedicadas de Intel y con la adopción de los estándares de Wayland por parte de NVIDIA, una situación que podría devolverla al tercer puesto que ocupó en tiempo pasados, aunque afortunadamente en unas condiciones muchísimo mejores que las tenía cuando Catalyst/FGLRX era el driver de referencia.