Maatskappy Collabora
Die voorgestelde drywer laat jou toe om Mesa te gebruik op toestelle wat nie OpenCL en OpenGL oorspronklik ondersteun nie, en ook as 'n beginpunt om OpenGL/OpenCL-toepassings oor te dra om bo-op D3D12 te loop. Vir GPU-vervaardigers maak die substelsel dit moontlik om ondersteuning vir OpenCL en OpenGL te verskaf, indien slegs drywers met D3D12-ondersteuning beskikbaar is.
Onder die onmiddellike planne is die bereiking van volle slaag van die verenigbaarheidstoetse van OpenCL 1.2 en OpenGL 3.3, kontrolering van verenigbaarheid met toepassings en die insluiting van ontwikkelings in die hoofsamestelling van Mesa. Ontwikkeling word saam met Microsoft-ingenieurs wat ontwikkel, uitgevoer
Die implementering sluit die Gallium-drywer, OpenCL-samesteller, OpenCL runtime en NIR-na-DXIL-skadu-samesteller in, wat die intermediêre voorstelling van NIR-shaders wat in Mesa gebruik word omskakel na die DXIL (DirectX Intermediate Language) binêre formaat, ondersteun in DirectX 12 en gebaseer op LLVM 3.7 biskode (
Bronne met OpenCL-uitbreidings word saamgestel met behulp van clang in LLVM intermediêre pseudokode (LLVM IR), wat dan omgeskakel word in 'n intermediêre voorstelling van OpenCL-pitte in SPIR-V-formaat. Kerns in die SPIR-V-voorstelling word in Mesa oorgedra, na NIR-formaat vertaal, geoptimaliseer en na NIR-na-DXIL oorgedra om rekenaarskaderings in DXIL-formaat te genereer, geskik vir uitvoering op GPU's met DirectX 12-gebaseerde looptyd.
In plaas van Clover, die OpenCL-implementering wat in Mesa gebruik word, word 'n nuwe OpenCL-looptyd voorgestel, wat meer direkte omskakelings na die DirectX 12 API moontlik maak.
OpenCL- en OpenGL-bestuurders word voorberei met behulp van die Gallium-koppelvlak wat in Mesa verskaf word, wat jou toelaat om drywers te skep sonder om in OpenGL-spesifieke besonderhede in te gaan en OpenGL-oproepe in wese nader aan die grafiese primitiewe te vertaal waarop moderne GPU's werk. Gallium-bestuurder, aanvaar OpenGL-opdragte en wanneer die NIR-na-DXIL-vertaler gebruik word
genereer opdragbuffers wat op die GPU uitgevoer word deur die D3D12-bestuurder te gebruik.
Bron: opennet.ru