Разработчиците на Collabora не са спрели да работят и то е, че през последните месеци те дадоха много неща за разговор и този път не е изключение, защото наскоро обяви обявяването на внедряването в драйвера Panfrost на поддръжката на OpenGL 3.1 за графични процесори Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) и графични процесори Bifrost (Mali G3x, G5x, G7x), както и поддръжка на OpenGL ES 3.0 за графични процесори Bifrost.
Тези промени очаква се да бъде включен в съобщението Mesa 21.0, който в момента е на етап кандидат за стартиране.
Трябва да се помни, че разработчиците на Collabora са работили дълго време върху внедряването на контролери за таблици и пример за това е миналото Контролер за плот от галий, който изпълнява междинен слой за организиране на OpenCL 1.2 и OpenGL 3.3 API за драйвери с поддръжка на DirectX 12 (D3D12) и че техният изходен код е издаден под лиценза MIT.
Предложеният контролер ви позволява да използвате Mesa на устройства които първоначално не са съвместими с OpenCL и OpenGL а също и като начална позиция за пренасяне на OpenGL / OpenCL приложения за работа на D3D12.
От страна на новия драйвер на Panfrost се забелязва, че GPU Midgard и Bifrost споделят общи структури от данни за фиксирани функции, но Bifrost използва принципно различен набор от инструкции, което затруднява синхронното внедряване на функционалност за GPU данни.
В архитектурно отношение Bifrost споделя повечето от своите структури с данни с фиксирана функция с Midgard, но въвежда нов набор от инструкции. Нашата работа по въвеждането на OpenGL ES 3.0 в Bifrost отразява това разделение.
Някои функции с фиксирана функция, като например създаване на обратна връзка и преобразуване, работеха без конкретна промяна на Bifrost, както вече направихме в Midgard. Други функции на шейдъра, като еднородни буферни обекти, се изискват „от нулата“ в компилатора Bifrost, задача, улеснена от зрялото междинно представяне на компилатора с първокласна поддръжка за изграждане.
Например фиксираните функции, вече реализирани за Midgardкато „обратна връзка за преобразуване“, могат да бъдат прехвърлени в Bifrost без промени, докато функции като множество цели за изобразяване (MRT) са ограничени до някои специфични промени в Bifrost.
В същото време други операции на шейдър, като обединени буферни обекти, изискват изпълнение на надраскване за компилатора на шейдъри Bifrost.
Това следва поддръжката на OpenGL ES 3.0 в Midgard, която се появи през лятото, както и първоначалната поддръжка на OpenGL ES 2.0, която наскоро дебютира за Bifrost. OpenGL ES 3.0 вече е тестван на Mali G52 в непрекъснатата интеграция на Mesa, постигайки 99.9% скорост на преминаване в съответните тестове на програмата за качество на DrawElements.
Обаче други функции, като множество цели за изобразяване, изискват специфичен код от Bifrost, като същевременно се възползват от друг код, споделен с Midgard. И все пак работата за втори път напредва много по-бързо, свидетелство за силата на споделените кодове. Но не е нужно да ограничавате суапа си само до графични процесори Panfrost; Драйверите с отворен код могат да споделят код между доставчици.
Освен това в съобщението се споменава, че част от дублирането на работата е избегната чрез използване на междинно представяне в компилатора, че заедно със споделения код значително ускорява развитието и че с този подход кодът може да се използва не само за семейство графични процесори, но и за различни контролери.
По-специално, разработчиците споменават, че за да внедри OpenGL на настолни системи, драйверът Panfrost изисква използването на готови за използване компоненти Mesa, докато собственият драйвер за Мали е ограничен само до поддържането само на OpenGL ES.
Поддръжката на OpenGL 3.1 за настолни компютри обаче е почти „безплатна“ за нас като контролер Mesa нагоре по веригата, като използва общата инфраструктура.
И накрая, ако се интересувате да научите повече за това за новото внедряване на Panfrost, предложено от разработчиците на Collabora, можете да проверите подробностите В следващия линк.