Collabora развива надстройка за работа с OpenCL и OpenGL над DirectX

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

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

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

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

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

Collabora развива надстройка за работа с OpenCL и OpenGL над DirectX

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

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster