Драйвер GPU для Linux на M4 Mac mini написали за месяц с помощью ИИ
Разработчики Коди Хо и Никлас Шет рассказали, как примерно за месяц создали драйвер графического процессора для чипов Apple Silicon под Linux — задача, на которую обычно уходят годы. Драйвер уже полностью проходит тесты соответствия OpenGL ES 3.0 и, по словам авторов, достаточно быстр, чтобы запускать Minecraft на 200 fps, а также WebGL в Chrome и Firefox на M4 Mac mini.
Чистая комната и гипервизор
Работа велась методом «чистой комнаты»: исходные бинарники Apple не изучались, анализировались только аппаратные трассы, снятые через ранее написанный автором гипервизор, и собственные шейдеры. Обязательные закрытые блобы Apple рассматривались как непрозрачные объекты, документацию к ним по просьбе авторов написал сторонний человек. Все эксперименты опубликованы, чтобы можно было проверить происхождение кода.
Основная сложность пришлась на реверс-инжиниринг ABI прошивки GPU (Apple называет его AGX). На Apple Silicon ядро не общается с железом напрямую, а обменивается данными с прошивкой на закрытой ОС RTKit через разделяемые структуры в памяти, где поля прошивки перемешаны с полями хоста. У чипа A18 Pro этот ABI оказался заметно сложнее уже очень непростого M1: в полтора раза больше структур, вдвое больше указателей. Автор отдаёт должное Asahi Lina и Алиссе Розенцвейг, которые в своё время разобрали M1/M2.
Роль ИИ-агентов
Большую часть рутины взяли на себя ИИ-агенты — Codex (на моделях GPT-5.6 Sol и GPT-6 Astra) для реверса прошивки и Claude для дизассемблера. Подход строился на воспроизведении: посмотреть, что делает macOS, повторить, затем реализовать самостоятельно. Codex сохранял состояние памяти GPU, восстанавливал его после перезагрузки и постепенно заменял скопированные страницы собственным кодом.
Не обошлось без человеческого вмешательства. Захват состояния вычислительной (compute) нагрузки сначала весил 336 МБ и не поддавался воспроизведению; решение — загрузиться в однопользовательском режиме, отключив отрисовку, и снять крошечную чистую трассу. Автор отмечает и слабости агентов: Codex «педантичен» и порой надолго уходит в несущественные детали. Показательно, что коллега Никлас, чей агент был «заземлён» необходимостью собирать Mesa и проходить тесты Khronos CTS, продвигался значительно быстрее.
За отдельный курьёз можно принять описанный «костыль»: чтобы обойти слишком строгие ограничения безопасности, из-за которых агент останавливался, автор написал демон, который раз в минуту делает скриншот и, если картинка не изменилась, сам вводит команду продолжения.
Что дальше
В планах — Vulkan, OpenGL 4.6, OpenCL, ray tracing и запуск Direct3D 12 через Proton. Код пока не готов для конечных пользователей. С апстримом в ядро Linux будут сложности: драйвер для M1/M2 сам ещё не принят, а к первому, по сути, полностью написанному ИИ драйверу GPU авторы ждут повышенного скепсиса и более строгой проверки — проблемы, которые, как они признают, машины решить не помогут.
Источник: Hacker News
Комментарии
Войдите, чтобы комментировать.