Collabora разработва добавка за изпълнение на OpenCL и OpenGL върху DirectX

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

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

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

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

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

Collabora разработва добавка за изпълнение на OpenCL и OpenGL върху DirectX

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

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

Добавяне на нов коментар