HeadlinesBriefing favicon HeadlinesBriefing.com

Controlador GPU para M4 Mac en un mes

Hacker News •
×

Niklas y yo construimos un controlador GPU totalmente compatible con OpenGL ES 3.0 para el M4 Mac Mini y el MacBook Neo en aproximadamente un mes, un proceso que normalmente lleva años. El controlador ejecuta Chrome y Firefox con WebGL y Minecraft a 200 fps. Implicó la ingeniería inversa del ABI del firmware de la GPU AGX y los componentes de espacio de usuario de manera limpia.

Anteriormente, construí un hipervisor para hacer ingeniería inversa de macOS. Nuestro objetivo era implementar controladores OpenGL conformes (y pronto Vulkan). Hicimos ingeniería inversa del espacio de usuario del M4, A18 Pro y M5, construimos un compilador IR/shader personalizado, un generador de flujo de comandos y un controlador completo del kernel de Linux. Solo usamos rastros de hardware y nuestros propios shaders, tratando los blobs de Apple como opacos.

El controlador del kernel se comunica con el firmware de la GPU que ejecuta RTKit, no directamente con el hardware. El ABI del firmware fue la parte más molesta, con estructuras compartidas que intercalan campos de firmware y host. Asahi Lina descubrió esto para M1/M2 durante agotadoras jornadas de 12 horas.

El código no está listo para usuarios finales, pero nuestro objetivo es llevarlo a ellos pronto.

Entidades clave: Empresas: Apple | Personas: Cody Ho, Niklas, Asahi Lina