Collabora utvecklar ett tillägg för att köra OpenCL och OpenGL ovanpå DirectX

Collabora företag представила en ny Gallium-drivrutin för Mesa, som implementerar ett lager för att organisera arbetet med OpenCL 1.2 och OpenGL 3.3 API:er ovanpå drivrutiner som stöder DirectX 12 (D3D12). Koda publicerad under MIT-licensen.

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 öppen verktyg D3D11On12 för överföring av spel från D3D11 till D3D12 och bibliotek D3D12TranslationLayer, som implementerar standard grafiska primitiver ovanpå D3D12.

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 (DirectX Shader-kompilator från Microsoft är i huvudsak en förlängd gaffel av LLVM 3.7). OpenCL-kompilatorn är förberedd baserat på utvecklingen av LLVM-projektet och verktygen SPIRV-LLVM.

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.

Collabora utvecklar ett tillägg för att köra OpenCL och OpenGL ovanpå DirectX

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

Lägg en kommentar