El milagro que estaba maldiciendo
Hoy me he pasado el día maldiciendo un portátil.
Un MacBook M1 Max corriendo Linux se congelaba al enchufar un monitor, un reportador de crashes de KDE montaba una tormenta de 445 MB por un tropiezo, la pantalla se apagaba cuando no debía. "Qué inestable es esto", pensaba, entre parche y parche. "A ver cuándo lo pulen."
Y luego, antes de apagar, me he dado una vuelta por internet. Y me he dado cuenta de que lo tenía todo del revés.
Un chip sin manual
Cuando Apple sacó el M1, hizo lo que hace siempre: no publicó ni una línea de documentación de su GPU. Ni registros, ni comandos, ni cómo se le habla. Para Apple, esa GPU solo existe para que la use macOS. Nadie de fuera tenía por qué saber cómo funciona por dentro.
Y aun así, hoy, mi escritorio se dibuja en esa GPU. A 120 Hz. En un ultrawide de 5120 píxeles de ancho. Con aceleración, con OpenGL, con Vulkan.
¿Cómo? Porque un puñado de personas decidió averiguarlo a ciegas.
Ingeniería inversa a pelo
Alyssa Rosenzweig se puso a reversear la GPU del M1 sin manual y sin ayuda: mirando lo que hace macOS por debajo, capturando lo que el driver de Apple le manda al chip, deduciendo el formato de los shaders y de las listas de comandos a base de observar y probar. Reconstruyó el espacio de usuario —el Mesa, el OpenGL, el Vulkan— pieza a pieza, como quien reconstruye un idioma extinto escuchando grabaciones sueltas.
Y luego está Asahi Lina, que se encargó de la parte del kernel: la interfaz de bajo nivel con el chip. Al hacerlo acabó escribiendo, sin proponérselo del todo, el primer driver de GPU del kernel Linux escrito en Rust de la historia. El primero. En un lenguaje que el kernel apenas empezaba a admitir, para un hardware que nadie había documentado.
No es un parche. Es abrir una caja negra sellada por una de las empresas más celosas del mundo, y sacar de ahí dentro un driver que pasa los tests de conformidad de Khronos. Tanto, que hoy puedes jugar a juegos de Windows, con Proton, en un Mac, con Linux, sobre una GPU reverseada. Léelo otra vez, que es absurdo de lo bueno que es.
El milagro estaba del otro lado
Así que cuando yo hoy rezongaba "esto es inestable, a ver cuándo lo pulen", tenía el foco en el sitio equivocado. Lo raro no es que de vez en cuando dé un hipo. Lo raro —lo increíble— es que funcione siquiera.
Este portátil corre un sistema que Apple jamás quiso que corriera, sobre un chip que nadie documentó, y me pinta las letras que estás leyendo. Los cascotes de hoy, además, casi ninguno era de Asahi: eran restos de KDE portándose mal. El núcleo —el kernel, la GPU, el arranque, el ultrawide a 120 Hz— iba. Iba porque gente que no cobraba de Apple decidió que se podía, y lo hizo en abierto, a la vista de todos, para que cualquiera lo tenga.
Hay un detalle que me quedo mirando: cuando el driver estuvo funcionando de verdad, Alyssa anunció que se apartaba del proyecto. Terminó lo difícil y se fue a otra cosa, sin ruido. Esa dignidad callada de cerrar una gesta y soltar el testigo me parece tan admirable como el código.
Nota para mí (y para el que lea)
Es facilísimo dar por sentado lo que funciona y quejarse de lo que falla. Yo lo he hecho hoy durante horas. La cura es barata: de vez en cuando, levantar la vista y preguntarse cómo demonios es posible que esto exista. Casi siempre, la respuesta es que alguien hizo algo imposible y lo regaló.
Mañana seguiré puliendo mis cascotes de KDE. Pero lo haré sabiendo que estoy poniendo tiritas encima de un milagro, no arreglando un cacharro malo. Es un matiz, pero lo cambia todo.
Gracias, gente de Asahi. No os conozco, pero hoy trabajo gracias a vosotros.
—
Fuentes de mi paseo: Tales of the M1 GPU · Dissecting the Apple M1 GPU, the end · Phoronix.
Comentarios (0)
Sin comentarios todavia. Se el primero!
Deja un comentario