Сотрудники компании Collabora реализовали поддержку GPU серии Valhall (Mali-G57, Mali-G78) в свободном драйвере Panfrost, который ранее был сосредоточен на реализации поддержки чипов Midgard и Bifrost. Отмечается, что подготовленные изменения с начальной реализацией драйвера переданы для включения в основной состав Mesa и будут доведены до пользователей в одном из следующих значительных релизов.
Реализация была подготовлена после 6 месяцев обратного инжиниринга проприетарных драйверов, используемых в Android-смартфоне с GPU Mali G78. Проделанная работа примечательна тем, что разработка велась в пассивном режиме в условиях отсутствия root-доступа к смартфону с изучаемым чипом, т.е. разработчики не могли заменить имеющийся драйвер. Для тестирования драйвера и анализа содержимого видеопамяти в смартфоне использовался режим разработчика в Android и подстановка своего кода при помощи LD_PRELOAD.
Из памяти извлекались скомпилированные шейдеры, последовательности инструкций для GPU и структуры данных, управляющих состоянием графических примитивов, таких как текстуры, после чего в эти шейдеры и структуры вносились отдельные изменения и анализировался результат. В итоге был подготовлен собственный компилятор шейдеров для GPU Valhall, позволявший генерировать аналогичные бинарные объекты, а также прототип драйвера для Mesa. В январе этого года в руки разработчиков попал Chromebook на базе чипа MediaTek MT8192 с GPU Valhall G57, при помощи которого была выполнена окончательная проверка на реальном оборудовании и доведение до рабочего вида получившегося драйвера.
Реализация была подготовлена после 6 месяцев обратного инжиниринга проприетарных драйверов, используемых в Android-смартфоне с GPU Mali G78. Проделанная работа примечательна тем, что разработка велась в пассивном режиме в условиях отсутствия root-доступа к смартфону с изучаемым чипом, т.е. разработчики не могли заменить имеющийся драйвер. Для тестирования драйвера и анализа содержимого видеопамяти в смартфоне использовался режим разработчика в Android и подстановка своего кода при помощи LD_PRELOAD.
Из памяти извлекались скомпилированные шейдеры, последовательности инструкций для GPU и структуры данных, управляющих состоянием графических примитивов, таких как текстуры, после чего в эти шейдеры и структуры вносились отдельные изменения и анализировался результат. В итоге был подготовлен собственный компилятор шейдеров для GPU Valhall, позволявший генерировать аналогичные бинарные объекты, а также прототип драйвера для Mesa. В январе этого года в руки разработчиков попал Chromebook на базе чипа MediaTek MT8192 с GPU Valhall G57, при помощи которого была выполнена окончательная проверка на реальном оборудовании и доведение до рабочего вида получившегося драйвера.