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, преобразуващ използваното в Mesa междинно представяне на шейдъри NIR в бинарен формат DXIL (DirectX Intermediate Language), поддържан в DirectX 12 и базиран на биткод LLVM 3.7 (DirectX Shader Compiler от Microsoft, всъщност разширен форк на 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