Компания Collabora сообщила о реализации в драйвере Panfrost поддержки OpenGL 3.1 для GPU Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) и GPU Bifrost (Mali G3x, G5x, G7x), а также поддержки OpenGL ES 3.0 для GPU Bifrost. Изменения войдут в состав выпуска Mesa 21.0, который сейчас находится на стадии кандидата в релизы.
Отмечается, что GPU Midgard и Bifrost используют общие структуры данных для фиксированных функций, но в Bifrost применяется принципиально иной набор команд, что затрудняет синхронную реализацию функциональности для данных GPU. Например, уже реализованные для Midgard фиксированные возможности, такие как “transform feedback”, могут быть перенесены для Bifrost без изменений, а такие возможности, как множественные цели рендеринга (MRT, Multiple Render Targets) ограничиваются лишь отдельными специфичными изменениями для Bifrost. При этом остальные операции с шейдерами, такие как унифицированные буферные объекты, требуют реализации с нуля для компилятора шейдеров Bifrost.
Частично дублирования работы удалось избежать благодаря использованию промежуточного представления в компиляторе, которое вместе с совместным использованием кода заметно ускоряет разработку. Более того, при подобном подходе код может использоваться не только для одного семейства GPU, но и для разных драйверов. В частности, для реализации используемого на настольных системах OpenGL в драйвере Panfrost использовались уже готовые компоненты Mesa, при том, что
проприетарный драйвер для Mali ограничен поддержкой только OpenGL ES.