Collabora udvikler en tilføjelse til at køre OpenCL og OpenGL oven på DirectX

Firma Collabora fremlagde en ny Gallium-driver til Mesa, som implementerer et lag til at organisere arbejdet med OpenCL 1.2 og OpenGL 3.3 API'erne oven på drivere, der understøtter DirectX 12 (D3D12). Kode offentliggjort under MIT-licensen.

Den foreslåede driver giver dig mulighed for at bruge Mesa på enheder, der ikke naturligt understøtter OpenCL og OpenGL, og også som udgangspunkt for portering af OpenGL/OpenCL-applikationer til at køre oven på D3D12. For GPU-producenter gør undersystemet det muligt at yde support til OpenCL og OpenGL, hvis kun drivere med D3D12-understøttelse er tilgængelige.

Blandt de umiddelbare planer er opnåelse af fuld beståelse af kompatibilitetstestene af OpenCL 1.2 og OpenGL 3.3, kontrol af kompatibilitet med applikationer og inkludering af udviklinger i hovedsammensætningen af ​​Mesa. Udviklingen udføres i samarbejde med Microsofts ingeniører, der udvikler åbent værktøjer D3D11On12 til overførsel af spil fra D3D11 til D3D12 og bibliotek D3D12Oversættelseslag, som implementerer standard grafiske primitiver oven på D3D12.

Implementeringen inkluderer Gallium-driveren, OpenCL-kompileren, OpenCL runtime og NIR-til-DXIL shader-kompileren, som konverterer den mellemliggende repræsentation af NIR-shaders, der bruges i Mesa, til det binære DXIL-format (DirectX Intermediate Language), understøttet i DirectX 12 og baseret på LLVM 3.7 bitcode (DirectX Shader Compiler fra Microsoft er i det væsentlige en forlænget gaffel af LLVM 3.7). OpenCL-kompileren er udarbejdet baseret på udviklingen af ​​LLVM-projektet og værktøjerne SPIRV-LLVM.

Kilder med OpenCL-udvidelser kompileres ved hjælp af clang til LLVM mellemliggende pseudokode (LLVM IR), som derefter konverteres til en mellemrepræsentation af OpenCL-kerner i SPIR-V-format. Kerner i SPIR-V-repræsentationen overføres til Mesa, oversættes til NIR-format, optimeres og videregives til NIR-til-DXIL for at generere compute shaders i DXIL-format, velegnet til udførelse på GPU'er ved hjælp af DirectX 12-baseret runtime.
I stedet for Clover, OpenCL-implementeringen, der bruges i Mesa, foreslås en ny OpenCL-runtime, som tillader flere direkte konverteringer til DirectX 12 API.

Collabora udvikler en tilføjelse til at køre OpenCL og OpenGL oven på DirectX

OpenCL- og OpenGL-drivere er forberedt ved hjælp af Gallium-grænsefladen i Mesa, som giver dig mulighed for at oprette drivere uden at gå ind i OpenGL-specifikke detaljer og oversætte OpenGL-kald i det væsentlige tættere på de grafiske primitiver, som moderne GPU'er opererer på. Gallium-driver, accepterer OpenGL-kommandoer og ved brug af NIR-til-DXIL-oversætteren
genererer kommandobuffere, der udføres på GPU'en ved hjælp af D3D12-driveren.

Kilde: opennet.ru

Tilføj en kommentar