Collabora ընկերություն
Առաջարկվող դրայվերը թույլ է տալիս օգտագործել Mesa-ն սարքերում, որոնք բնիկորեն չեն աջակցում OpenCL և OpenGL, ինչպես նաև որպես մեկնարկային կետ՝ OpenGL/OpenCL հավելվածները D3D12-ի վերևում գործարկելու համար: GPU արտադրողների համար ենթահամակարգը հնարավորություն է տալիս աջակցություն տրամադրել OpenCL-ին և OpenGL-ին, եթե հասանելի են միայն D3D12 աջակցությամբ դրայվերները:
Անմիջական ծրագրերից են OpenCL 1.2-ի և OpenGL 3.3-ի համատեղելիության թեստերի ամբողջական հանձնումը, հավելվածների հետ համատեղելիության ստուգումը և Mesa-ի հիմնական կազմում զարգացումների ընդգրկումը: Մշակումն իրականացվում է Microsoft-ի մշակող ինժեներների հետ համատեղ
Իրականացումը ներառում է Gallium դրայվերը, OpenCL կոմպիլյատորը, OpenCL գործարկման ժամանակը և NIR-ից DXIL ստվերային կոմպիլյատորը, որը փոխակերպում է Mesa-ում օգտագործվող NIR շեյդերների միջանկյալ ներկայացումը DXIL (DirectX միջանկյալ լեզու) երկուական ձևաչափի, որն ապահովվում է DirectX 12-ում և հիմնված LLVM 3.7 բիթկոդ (
OpenCL ընդլայնումներով աղբյուրները հավաքվում են կլանգի միջոցով LLVM միջանկյալ կեղծ կոդի մեջ (LLVM IR), որն այնուհետև վերածվում է OpenCL միջուկների միջանկյալ ներկայացման SPIR-V ձևաչափով: SPIR-V ներկայացման միջուկները փոխանցվում են Mesa-ին, թարգմանվում են NIR ձևաչափով, օպտիմիզացվում և փոխանցվում են NIR-ի-DXIL՝ DXIL ձևաչափով հաշվողական ստվերներ ստեղծելու համար, որոնք հարմար են DirectX 12-ի վրա հիմնված գործարկման ժամանակի օգտագործմամբ GPU-ներում կատարման համար:
Clover-ի՝ Mesa-ում օգտագործվող OpenCL-ի ներդրման փոխարեն, առաջարկվում է նոր OpenCL գործարկման ժամանակ, որը թույլ է տալիս ավելի շատ ուղղակի փոխարկումներ DirectX 12 API-ին:
OpenCL-ի և OpenGL-ի դրայվերները պատրաստվում են Mesa-ում տրված Gallium ինտերֆեյսի միջոցով, որը թույլ է տալիս ստեղծել դրայվերներ՝ առանց OpenGL-ին հատուկ մանրամասների մեջ մտնելու և OpenGL-ի զանգերը, ըստ էության, ավելի մոտեցնելով գրաֆիկական պարզունակներին, որոնց վրա գործում են ժամանակակից GPU-ները: Gallium վարորդը, ընդունում է OpenGL հրամանները և NIR-ից DXIL թարգմանիչն օգտագործելիս
առաջացնում է հրամանների բուֆերներ, որոնք կատարվում են GPU-ի վրա՝ օգտագործելով D3D12 դրայվերը:
Source: opennet.ru