Desktop OpenGL 3.1 (Panfrost)

Опубликовано August@Karro - чт, 01/14/2021 - 18:42
Изменения Panfrost войдут в состав выпуска Mesa 21.0, который сейчас находится на стадии кандидата в релизы. 

Драйвер Panfrost был основан в 2018 году Алисой Розенцвейг (Alyssa Rosenzweig), работающей в компании Collabora, и до сих пор развивался на основе обратного инжиниринга оригинальных драйверов от компании ARM.

В драйвере Panfrost доступна поддержка OpenGL 3.1 для GPU Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) и GPU Bifrost (Mali G3x, G5x, G7x), а также поддержки OpenGL ES 3.0 для GPU Bifrost.

Отмечается, что GPU Midgard и Bifrost используют общие структуры данных для фиксированных функций, но в Bifrost применяется принципиально иной набор команд, что затрудняет синхронную реализацию функциональности для данных GPU.

Например, уже реализованные для Midgard фиксированные возможности, такие как "transform feedback", могут быть перенесены для Bifrost без изменений, а такие возможности, как множественные цели рендеринга (MRT, Multiple Render Targets) ограничиваются лишь отдельными специфичными изменениями для Bifrost. При этом остальные операции с шейдерами, такие как унифицированные буферные объекты, требуют реализации с нуля для компилятора шейдеров Bifrost. 

Частично дублирования работы удалось избежать благодаря использованию промежуточного представления в компиляторе, которое вместе с совместным использованием кода заметно ускоряет разработку. Более того, при подобном подходе код может использоваться не только для одного семейства GPU, но и для разных драйверов. В частности, для реализации используемого на настольных системах OpenGL в драйвере Panfrost использовались уже готовые компоненты Mesa, при том, что проприетарный драйвер для Mali ограничен поддержкой только OpenGL ES. 


Компания ARM выразила готовность предоставить разработчикам драйвера необходимую информацию и документацию.

 

Последние материалы