Collabora rozwija nakładkę do pracy OpenCL i OpenGL na DirectX

Firma Collabora przedstawiła nowy sterownik Gallium dla Mesa, implementujący warstwę do obsługi API OpenCL 1.2 i OpenGL 3.3 na sterownikach wspierających DirectX 12 (D3D12). Kod opublikowano na licencji MIT.

Proponowany sterownik pozwala na wykorzystanie Mesa na urządzeniach, które pierwotnie nie wspierały OpenCL i OpenGL, a także jako punkt wyjścia do portowania aplikacji OpenGL/OpenCL do działania na D3D12. Dla producentów GPU podsystem umożliwia zapewnienie wsparcia dla OpenCL i OpenGL w przypadku, gdy dostępne są jedynie sterowniki wspierające D3D12.

W najbliższych planach zaznaczone jest osiągnięcie pełnego ukończenia testów zgodności z OpenCL 1.2 i OpenGL 3.3, sprawdzenie zgodności z aplikacjami oraz włączenie wyników do podstawowego składnika Mesa. Prace prowadzone są we współpracy z inżynierami Microsoftu, rozwijającymi otwarty narzędzia D3D11On12 do portowania gier z D3D11 na D3D12 oraz bibliotekę D3D12TranslationLayer, implementującą typowe prymitywy graficzne na D3D12.

Realizacja obejmuje sterownik Gallium, kompilator OpenCL, runtime OpenCL oraz kompilator shaderów NIR-to-DXIL, który przekształca używane w Mesa pośrednie reprezentacje shaderów NIR do binarnego formatu DXIL (DirectX Intermediate Language), wspieranego w DirectX 12 i opartego na kodzie bitowym LLVM 3.7 (DirectX Shader Compiler od Microsoftu, który w zasadzie jest rozszerzonym fork-iem LLVM 3.7). Kompilator OpenCL został przygotowany na podstawie prac projektu LLVM i narzędzi SPIRV-LLVM.

Teksty źródłowe z rozszerzeniami OpenCL są kompilowane za pomocą clang do pośredniego pseudokodu LLVM (LLVM IR), który następnie jest przekształcany w pośrednią reprezentację rdzeni OpenCL w formacie SPIR-V. Rdzenie w reprezentacji SPIR-V są przekazywane do Mesa, tłumaczone do formatu NIR, optymalizowane i przekazywane do NIR-to-DXIL w celu generowania shaderów obliczeniowych w formacie DXIL, nadających się do wykonania na GPU z użyciem runtime opartego na DirectX 12.
Zamiast Clover, wykorzystywanego w implementacji OpenCL w Mesie, zaproponowano nowy runtime OpenCL, pozwalający na więcej bezpośrednich transformacji do API DirectX 12.

Collabora rozwija nakładkę do pracy OpenCL i OpenGL na DirectX

Sterowniki OpenCL i OpenGL zostały przygotowane z wykorzystaniem dostarczonego w Mesa interfejsu Gallium, który umożliwia podczas tworzenia sterowników nie zagłębianie się w specyficzne dla OpenGL detale i translatować wywołania OpenGL w byty bardziej zbliżone do prymitywów graficznych, którymi operują nowoczesne GPU. Sterownik Gallium przyjmuje komendy OpenGL i przy wykorzystaniu translatora NIR-to-DXIL
tworzy bufory poleceń, które są wykonywane na GPU, używając sterownika D3D12.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster