Collabora utvikler et tillegg for å kjøre OpenCL og OpenGL på toppen av DirectX

Selskapet Collabora presentert en ny Gallium-driver for Mesa, som implementerer et lag for å organisere arbeidet til OpenCL 1.2 og OpenGL 3.3 API-ene på toppen av drivere som støtter DirectX 12 (D3D12). Kode publisert under MIT-lisensen.

Den foreslåtte driveren lar deg bruke Mesa på enheter som ikke støtter OpenCL og OpenGL, og også som et utgangspunkt for portering av OpenGL/OpenCL-applikasjoner til å kjøre på toppen av D3D12. For GPU-produsenter gjør delsystemet det mulig å gi støtte for OpenCL og OpenGL, hvis kun drivere med D3D12-støtte er tilgjengelige.

Blant de umiddelbare planene er oppnåelse av full beståelse av kompatibilitetstestene til OpenCL 1.2 og OpenGL 3.3, kontroll av kompatibilitet med applikasjoner og inkludering av utviklingen i hovedsammensetningen til Mesa. Utviklingen utføres i samarbeid med Microsofts ingeniører som utvikler åpen verktøy D3D11On12 for overføring av spill fra D3D11 til D3D12 og bibliotek D3D12TranslationLayer, som implementerer standard grafiske primitiver på toppen av D3D12.

Implementeringen inkluderer Gallium-driveren, OpenCL-kompilatoren, OpenCL runtime og NIR-to-DXIL shader-kompilatoren, som konverterer den mellomliggende representasjonen av NIR-shaders brukt i Mesa til DXIL (DirectX Intermediate Language) binærformat, støttet i DirectX 12 og basert på LLVM 3.7 bitkode (DirectX Shader Compiler fra Microsoft er egentlig en utvidet gaffel av LLVM 3.7). OpenCL-kompilatoren er utarbeidet basert på utviklingen av LLVM-prosjektet og verktøyene SPIRV-LLVM.

Kilder med OpenCL-utvidelser kompileres ved hjelp av clang til LLVM mellomliggende pseudokode (LLVM IR), som deretter konverteres til en mellomrepresentasjon av OpenCL-kjerner i SPIR-V-format. Kjerner i SPIR-V-representasjonen sendes til Mesa, oversettes til NIR-format, optimaliseres og sendes til NIR-til-DXIL for å generere dataskyggere i DXIL-format, egnet for kjøring på GPUer ved bruk av DirectX 12-basert kjøretid.
I stedet for Clover, OpenCL-implementeringen som brukes i Mesa, foreslås en ny OpenCL-runtime, som tillater flere direkte konverteringer til DirectX 12 API.

Collabora utvikler et tillegg for å kjøre OpenCL og OpenGL på toppen av DirectX

OpenCL- og OpenGL-drivere er forberedt ved å bruke Gallium-grensesnittet i Mesa, som lar deg lage drivere uten å gå inn i OpenGL-spesifikke detaljer og oversette OpenGL-anrop i hovedsak nærmere grafikkprimitivene som moderne GPUer opererer på. Gallium-driver, godtar OpenGL-kommandoer og når du bruker NIR-til-DXIL-oversetteren
genererer kommandobuffere som kjøres på GPUen ved hjelp av D3D12-driveren.

Kilde: opennet.ru

Legg til en kommentar