Разработчиците на Collabora представиха нов контролер Gallium за Mesa

Контролер на Collabora

Наскоро Разработчиците на Collabora пуснаха чрез публикация в блог, нов контролер за галий за Mesa, който изпълнява междинен слой за организиране на OpenCL 1.2 и OpenGL 3.3 API за драйвери с поддръжка на DirectX 12 (D3D12) и че техният изходен код е издаден под лиценза MIT.

Предложеният контролер ще ви позволява да използвате Mesa на устройства които първоначално не са съвместими с OpenCL и OpenGL а също и като начална позиция за пренасяне на OpenGL / OpenCL приложения за работа на D3D12. За производителите на графични процесори подсистемата позволява да предоставя поддръжка за OpenCL и OpenGL, като драйверите поддържат само D3D12.

В публикацията си в блога разработчиците споделят:

През последните няколко месеца работихме по два вълнуващи нови проекта в Collabora и най-накрая е време да споделим информация за тях със света ...

На непосредствени планове, се наблюдава постигането на пълното одобрение на тестовете на Поддръжка на OpenCL 1.2 и OpenGL 3.3, проверка на съвместимостта с приложения и включване на най-добрите практики в основния състав на Mesa.

Относно новия контролер

Разработването на новия контролер се извършва съвместно с инженери на Microsoft да се разработят инструменти D3D11On12 за комплекти за прехвърляне на D3D11 и библиотека D3D12 D3D12TranslationLayer, както и стандартни графични примитивни приложения на върха на D3D12.

Прилагането включва драйвер Gallium, компилатор OpenCL, изпълнението на OpenCL и компилаторът за шейдър NIR-to-DXIL, който преобразува междинното представяне на NIR шейдъри, използвани в Mesa, в двоичен формат DXIL (междинен език DirectX), съвместим с DirectX 12 и базиран на битов код LLVM 3.7 (Microsoft DirectX Shader Compiler е по същество разширена вилица на LLVM 3.7). Компилаторът OpenCL е подготвен въз основа на опита на LLVM проекта и инструментариума SPIRV-LLVM.

Тази работа се основава на много предишни произведения. На първо място, ние изграждаме това, използвайки Mesa 3D, с интерфейса Gallium като основа за OpenGL слоя и NIR като основа за OpenCL компилатора. Също така използваме LLVM и преводача Khronos SPIRV-LLVM като компилатор.

Освен това използваме опита на Microsoft при създаването на техния слой за превод D3D12, както и собствения ни опит в разработването на Zink.

Изходният код на OpenCL се компилира с clang в междинния LLVM псевдокод (LLVM IR), който след това се преобразува в междинно представяне на ядрото на OpenCL във формат SPIR-V.

Ядрата в представянето на SPIR-V се прехвърлят в Mesa, преведени във формат NIR, оптимизирани и прехвърлени в NIR-to-DXIL за генериране на подходящи DXIL изчислителни шейдъри за изпълнение на GPU с използване на DirectX 12 базирана среда на изпълнение. Вместо да се използва Clover в изпълнението на OpenCL Mesa, се предлага ново изпълнение на OpenCL, което позволява по-директни преобразувания към DirectX 12 API.

Драйверите за OpenCL и OpenGL са подготвени с помощта на интерфейса Gallium предоставено в Mesa, което ви позволява да заобиколите спецификите на OpenGL при създаване на контролери и да преведете OpenGL повиквания в обекти, които са по-близо до графичните примитиви, с които работят съвременните графични процесори.

Драйверът Gallium приема команди OpenGL и с участието на преводача NIR-to-DXIL изгражда командни буфери, които се изпълняват на графичния процесор, използвайки драйвера D3D12.

И накрая, разработчиците споменават, че това е ранна работа и че очакват контролерът да се подобри с времето:

Това е само съобщението и предстои много работа. В момента има нещо, което работи в някои случаи, но тепърва започваме да драскаме повърхността.

На първо място, трябва да стигнем до нивото на характеристиките, към които се насочваме. Понастоящем целите ни са да преминем тестване за съответствие за OpenCL 1.2 и OpenGL 3.3. Предстои ни дълъг път, но с малко упорита работа и пот съм сигурен, че ще стигнем там.

Ако се интересувате да научите повече за това, можете да проверите оригиналната бележка в следната връзка или за тези, които се интересуват от преглед на изходния код, могат да го направят от тази връзка.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорник за данните: AB Internet Networks 2008 SL
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.