Компанијата Колабора
Предложениот драјвер ви овозможува да користите Mesa на уреди кои природно не поддржуваат OpenCL и OpenGL, а исто така и како почетна точка за пренесување на апликациите OpenGL/OpenCL за да работат на врвот на D3D12. За производителите на графички процесори, потсистемот овозможува да се обезбеди поддршка за OpenCL и OpenGL, доколку се достапни само драјвери со поддршка за D3D12.
Меѓу непосредните планови се постигнување на целосно полагање на тестовите за компатибилност на OpenCL 1.2 и OpenGL 3.3, проверка на компатибилноста со апликациите и вклучување на развојот во главниот состав на Mesa. Развојот се врши заедно со инженерите на Microsoft кои се развиваат
Имплементацијата вклучува двигател Галиум, компајлер OpenCL, компајлер за време на траење OpenCL и компајлер за шејдер NIR-to-DXIL, кој ја конвертира средното претставување на NIR шејдерите што се користат во Mesa во бинарен формат DXIL (DirectX Intermediate Language), поддржан во DirectX 12 и базиран на LLVM 3.7 биткод (
Изворите со екстензии на OpenCL се компајлираат со помош на clang во LLVM среден псевдокод (LLVM IR), кој потоа се претвора во средно претставување на OpenCL кернелите во формат SPIR-V. Јадрата во претставата SPIR-V се пренесуваат во Mesa, се преведуваат во формат NIR, се оптимизираат и се предаваат на NIR-на-DXIL за да се генерираат пресметковни шејдери во формат DXIL, погодни за извршување на графички процесори со користење на траење базирано на DirectX 12.
Наместо Clover, имплементацијата OpenCL што се користи во Mesa, се предлага ново траење на OpenCL, што овозможува повеќе директни конверзии во DirectX 12 API.
Драјверите за OpenCL и OpenGL се подготвуваат со помош на интерфејсот Галиум обезбеден во Mesa, кој ви овозможува да креирате драјвери без да навлегувате во детали специфични за OpenGL и да ги преведувате повиците на OpenGL во суштина поблиску до графичките примитиви на кои работат модерните графички процесори. Возачот на Галиум, прифаќа команди OpenGL и кога го користи преведувачот NIR-на-DXIL
генерира командни бафери кои се извршуваат на графичкиот процесор со помош на драјверот D3D12.
Извор: opennet.ru