Cuando se trata de el soporte de Apple M1 y M2 en Linux, uno de los mayores obstáculos para el uso diario adecuado para los usuarios finales es la actual falta de aceleración de GPU. La ingeniería inversa ha estado ocurriendo para el procesador de gráficos Apple Silicon, los primeros experimentos se llevaron a cabo bajo macOS y el entorno m1n1 de Asahi, y el siguiente paso será comenzar a escribir un controlador de kernel Direct Rendering Manager (DRM). Para sorpresa de algunos, se está explorando la viabilidad de escribir este controlador de GPU kernel DRM en el lenguaje de programación Rust.
El destacado colaborador de Asahi Linux, Asahi Lina, expresó la posibilidad de escribir su nuevo controlador de GPU kernel para Apple AGX dentro del lenguaje de programación Rust.
Linux en Apple M1/M2 actualmente está limitado a la aceleración de gráficos basada en CPU LLVMpipe.
Asahi Lina explicó hoy en la lista de correo:
Estas GPU ejecutan firmware y tienen estructuras de datos de memoria compartida bastante complejas que deben ser administradas por el host, por lo que me inclino por Rust por su seguridad, mejor metaprogramación y expresividad general. Tengo un controlador prototipo escrito en Python (que se ejecuta en el espacio de usuario desde un host remoto, larga historia), y tener un lenguaje de nivel superior ha sido muy útil para realizar ingeniería inversa en la GPU y crear prototipos de diferentes ideas sobre cómo debería funcionar el controlador.
Me doy cuenta de que son los primeros días de Rust en Linux y este es un desafío ambicioso, pero estoy dispuesto a aprender y el controlador tardará un tiempo en estabilizarse hasta el punto de ser compatible con upstreaming de cualquier manera (en particular, el UAPI) , por lo que escribirlo en Rust se siente menos arriesgado en este punto de lo que solía ser, dado que parece que Rust se fusionará en los próximos ciclos del kernel a más tardar.
Este sería el primer controlador de GPU kernel escrito en el lenguaje de programación Rust. Dado que el código del controlador real aún no se ha escrito para el controlador Rust, queda por ver si todo el controlador se implementará en Rust o solo las partes que interactúan con el firmware binario.
Puede encontrar más ideas sobre este controlador del kernel Linux de la GPU de Apple que podría estar escrito en el lenguaje de programación Rust a través de lista de correo de óxido para Linux.
En caso de que se haya perdido mi revisión a principios de esta semana, consulte mis pruebas comparativas iniciales de Apple M2 Linux.