Collabora företag
Den föreslagna drivrutinen låter dig använda Mesa på enheter som inte har stöd för OpenCL och OpenGL, och även som en utgångspunkt för portering av OpenGL/OpenCL-applikationer för att köras ovanpå D3D12. För GPU-tillverkare gör delsystemet det möjligt att ge stöd för OpenCL och OpenGL, om endast drivrutiner med D3D12-stöd är tillgängliga.
Bland de omedelbara planerna är uppnåendet av full godkännande av kompatibilitetstesterna för OpenCL 1.2 och OpenGL 3.3, kontroll av kompatibilitet med applikationer och inkludering av utvecklingar i huvudsammansättningen av Mesa. Utvecklingen sker tillsammans med Microsofts ingenjörer som utvecklar
Implementeringen inkluderar Gallium-drivrutinen, OpenCL-kompilatorn, OpenCL runtime och NIR-to-DXIL shader-kompilatorn, som konverterar den mellanliggande representationen av NIR-shaders som används i Mesa till det binära formatet DXIL (DirectX Intermediate Language), som stöds i DirectX 12 och baserat på LLVM 3.7 bitkod (
Källor med OpenCL-tillägg kompileras med hjälp av clang till LLVM intermediate pseudocode (LLVM IR), som sedan konverteras till en mellanliggande representation av OpenCL-kärnor i SPIR-V-format. Kärnor i SPIR-V-representationen skickas till Mesa, översätts till NIR-format, optimeras och skickas till NIR-till-DXIL för att generera beräkningsskuggningar i DXIL-format, lämpliga för exekvering på GPU:er med DirectX 12-baserad körtid.
Istället för Clover, OpenCL-implementeringen som används i Mesa, föreslås en ny OpenCL-runtime, som tillåter fler direkta konverteringar till DirectX 12 API.
OpenCL- och OpenGL-drivrutiner är förberedda med hjälp av Gallium-gränssnittet som tillhandahålls i Mesa, vilket gör att du kan skapa drivrutiner utan att gå in i OpenGL-specifika detaljer och översätta OpenGL-anrop närmare de grafikprimitiv som moderna GPU:er fungerar på. Gallium-drivrutin, accepterar OpenGL-kommandon och när du använder NIR-till-DXIL-översättaren
genererar kommandobuffertar som körs på GPU:n med D3D12-drivrutinen.
Källa: opennet.ru