Shoqëria bashkëpunuese
Drejtuesi i propozuar ju lejon të përdorni Mesa në pajisjet që nuk mbështesin në mënyrë origjinale OpenCL dhe OpenGL, dhe gjithashtu si një pikënisje për transferimin e aplikacioneve OpenGL/OpenCL për të ekzekutuar në krye të D3D12. Për prodhuesit e GPU, nënsistemi bën të mundur ofrimin e mbështetjes për OpenCL dhe OpenGL, nëse disponohen vetëm drejtuesit me mbështetje D3D12.
Ndër planet imediate janë arritja e kalimit të plotë të testeve të përputhshmërisë të OpenCL 1.2 dhe OpenGL 3.3, kontrolli i përputhshmërisë me aplikacionet dhe përfshirja e zhvillimeve në përbërjen kryesore të Mesa. Zhvillimi kryhet së bashku me inxhinierët e Microsoft në zhvillim
Implementimi përfshin drejtuesin Gallium, përpiluesin OpenCL, OpenCL runtime dhe përpilues shader NIR-to-DXIL, i cili konverton paraqitjen e ndërmjetme të shaderëve NIR të përdorur në Mesa në formatin binar DXIL (DirectX Intermediate Language), i mbështetur në DirectX 12 dhe i bazuar në LLVM 3.7 bitkodi (
Burimet me zgjerime OpenCL përpilohen duke përdorur clang në pseudokodin e ndërmjetëm LLVM (LLVM IR), i cili më pas konvertohet në një paraqitje të ndërmjetme të bërthamave OpenCL në formatin SPIR-V. Bërthamat në përfaqësimin SPIR-V kalohen në Mesa, përkthehen në formatin NIR, optimizohen dhe kalohen te NIR-te-DXIL për të gjeneruar shader llogaritës në formatin DXIL, të përshtatshme për ekzekutim në GPU duke përdorur kohëzgjatjen e bazuar në DirectX 12.
Në vend të Clover, zbatimi OpenCL i përdorur në Mesa, propozohet një kohë e re ekzekutimi OpenCL, duke lejuar më shumë konvertime të drejtpërdrejta në DirectX 12 API.
Drejtuesit e OpenCL dhe OpenGL përgatiten duke përdorur ndërfaqen Gallium të ofruar në Mesa, e cila ju lejon të krijoni drejtues pa hyrë në detaje specifike të OpenGL dhe të përktheni thirrjet OpenGL në thelb më afër primitiveve grafike me të cilat funksionojnë GPU-të moderne. Drejtuesi Gallium, pranon komandat OpenGL dhe kur përdor përkthyesin NIR-në-DXIL
gjeneron buferat e komandës që ekzekutohen në GPU duke përdorur drejtuesin D3D12.
Burimi: opennet.ru