Collabora развівае надбудову для працы OpenCL і OpenGL па-над DirectX.

Кампанія Collabora прадставіла новы Gallium-драйвер для Mesa, які рэалізуе праслойку для арганізацыі працы API OpenCL 1.2 і OpenGL 3.3 па-над драйверамі з падтрымкай DirectX 12 (D3D12). Код апублікаваны пад ліцэнзіяй MIT.

Прапанаваны драйвер дазваляе выкарыстоўваць Mesa на прыладах, якія першапачаткова не падтрымліваюць OpenCL і OpenGL, а таксама ў якасці стартавай пазіцыі для партавання OpenGL/OpenCL-прыкладанняў для працы па-над D3D12. Для вытворцаў GPU падсістэма дае магчымасць падаць падтрымку OpenCL і OpenGL, пры наяўнасці драйвераў толькі з падтрымкай D3D12.

З бліжэйшых планаў адзначаецца дасягненне поўнага праходжання тэстаў на сумяшчальнасць OpenCL 1.2 і OpenGL 3.3, праверка сумяшчальнасці з праграмамі і ўключэнне напрацовак у асноўны склад Mesa. Распрацоўка вядзецца сумесна з інжынерамі Microsoft, якія развіваюць адкрыты інструментарый D3D11On12 для перакладу гульняў з D3D11 на D3D12 і бібліятэку D3D12TranslationLayer, якая рэалізуе тыпавыя графічныя прымітывы па-над D3D12.

Рэалізацыя ўключае Gallium-драйвер, кампілятар OpenCL, OpenCL runtime і кампілятар шэйдараў NIR-to-DXIL, пераўтваральны ужывальнае ў Mesa прамежкавае ўяўленне шэйдараў NIR у бінарны фармат DXIL (DirectX Intermediate Language), які падтрымліваецца ў DirectX 12 і заснаваны на біт.Кампілятар шэдэраў DirectX ад Microsoft у сутнасці пашыраны форк (LLVM 3.7). Кампілятар OpenCL падрыхтаваны на аснове напрацовак праекту LLVM і інструментара SPIRV-LLVM.

Зыходныя тэксты з пашырэннямі OpenCL кампілююцца пры дапамозе clang у прамежкавы псеўдакод LLVM (LLVM IR), які затым пераўтворыцца ў прамежкавае ўяўленне OpenCL-ядзер у фармаце SPIR-V. Ядры ў паданні SPIR-V перадаюцца ў Mesa, транслююцца ў фармат NIR, аптымізуюцца і перадаюцца ў NIR-to-DXIL для генерацыі вылічальных шэйдараў у фармаце DXIL, прыдатным для выканання на GPU c выкарыстаннем runtime на базе DirectX 12.
Замест Clover, ужывальнай у Mesa рэалізацыі OpenCL, прапанаваны новы OpenCL runtime, які дапушчае больш прамых пераўтварэнняў у API DirectX 12.

Collabora развівае надбудову для працы OpenCL і OpenGL па-над DirectX.

OpenCL і OpenGL драйверы падрыхтаваны з выкарыстаннем які прадстаўляецца ў Mesa інтэрфейсу Gallium, які дазваляе пры стварэнні драйвераў не паглыбляцца ў спецыфічныя для OpenGL дэталі і трансляваць выклікі OpenGL у сутнасці, бліжэйшыя да графічных прымітываў, якімі аперуюць сучасныя GPU. Gallium-драйвер, прымае каманды OpenGL і пры прыцягненні транслятара NIR-to-DXIL
фармуе буферы каманд, якія выконваюцца на GPU, выкарыстоўваючы драйвер D3D12.

Крыніца: opennet.ru

Дадаць каментар