Компания Collabora уже несколько лет работает над драйвером графического процессора Panfrost с открытым исходным кодом для Arm Mali Bifrost и Midgard GPU и даже получает официальную поддержку от Arm.
Но, очевидно, эта поддержка не включает документацию для графического процессора Mali-G78 и других недавних графических процессоров Arm Valhall Mali, поскольку не так давно, примерно за месяц, компания провела обратную разработку Mali-G78, прежде чем выпустить документацию по набору инструкций Valhall (PDF).
Другие результаты обратной разработки включают описание архитектуры XML, которое может анализироваться программами, а также ассемблер и дизассемблер Valhall, используемые в качестве вспомогательного средства обратной разработки.
Помимо графического процессора Mali-G78 «Borr», работа будет полезна для других графических процессоров Valhall, включая Mali-G77 «TryM», Mali-G57 «Natt-A/B», Mali-G68 «Ottr» и Mali-G78AE «Borr-AE» для автомобильного и промышленного применения.
Алисса Розенцвейг объясняет работу Collabora, основанную на международной версии телефона Samsung Galaxy S21 на базе системы-на-кристалле Samsung Exynos 2100 с графическим процессором Mali-G78 MP14. Она отметила, что обратная разработка на Android сложнее, чем на Linux, но на данный момент это единственный вариант.
Команде удалось идентифицировать каждый слой с помощью библиотеки-оболочки, которая выгружает каждый выполненный шейдер для обратной разработки нового набора инструкций и разработки дизассемблера. Им действительно помогли некоторые общедоступные источники информации, в частности, статья Anandtech, в которой была раскрыта полезная информация о Valhall:
- На основе Warp, как Bifrost, но с 16 потоками на Warp вместо 4/8 на Bifrost.
- Изоморфный Bifrost на уровне инструкций («операционная эквивалентность»).
- Регулярно кодируется.
- Flat, без пункта Bifrost и упаковки кортежа.
- Кэш инструкций 16 КБ, содержащий 2048 инструкций
Получение документации по набору команд, а также ассемблера и дизассемблера – это первый шаг к тому, чтобы Panfrost поддерживал графические процессоры Valhall. Алисса также отмечает, что Mali G78 вносит изменения, выходящие за рамки набора инструкций, с заметно отличающимися структурами данных, чтобы уменьшить накладные расходы на драйвер Vulkan, но, к счастью, многие структуры данных можно просто адаптировать из Bifrost, потребовав небольших изменений в драйвере Mesa. Она также предлагает людям/компаниям, разрабатывающим устройство для Linux с графическим процессором Valhall, связаться с Collabora, чтобы получить драйвер для Linux с открытым исходным кодом.
Ознакомьтесь с постом Collabora для получения полной информации.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.