Collabora opracowuje dodatek do uruchamiania OpenCL i OpenGL na DirectX

Firma Collabora представила nowy sterownik Gallium dla Mesa, który implementuje warstwę organizującą pracę API OpenCL 1.2 i OpenGL 3.3 na sterownikach obsługujących DirectX 12 (D3D12). Kod opublikowany na licencji MIT.

Proponowany sterownik pozwala na użycie Mesy na urządzeniach, które natywnie nie obsługują OpenCL i OpenGL, a także jako punkt wyjścia do przenoszenia aplikacji OpenGL/OpenCL tak, aby działały na platformie D3D12. W przypadku producentów procesorów graficznych podsystem umożliwia obsługę OpenCL i OpenGL, jeśli dostępne są tylko sterowniki z obsługą D3D12.

Do najbliższych planów należy osiągnięcie pełnego przejścia testów kompatybilności OpenCL 1.2 i OpenGL 3.3, sprawdzenie kompatybilności z aplikacjami oraz włączenie zmian w główny skład Mesy. Rozwój odbywa się wspólnie z inżynierami Microsoft zajmującymi się rozwojem otwarty narzędzia D3D11Wł12 do przenoszenia gier z D3D11 do D3D12 i biblioteki D3D12Warstwa tłumaczeniowa, który implementuje standardowe prymitywy graficzne na bazie D3D12.

Implementacja obejmuje sterownik Gallium, kompilator OpenCL, środowisko uruchomieniowe OpenCL i kompilator modułu cieniującego NIR-to-DXIL, który konwertuje pośrednią reprezentację shaderów NIR używanych w Mesa do formatu binarnego DXIL (DirectX Intermediate Language), obsługiwanego w DirectX 12 i opartego na Kod bitowy LLVM 3.7 (Kompilator modułu cieniującego DirectX firmy Microsoft jest zasadniczo rozszerzonym rozwidleniem LLVM 3.7). Kompilator OpenCL został przygotowany w oparciu o rozwój projektu i narzędzi LLVM SPIRV-LLVM.

Źródła z rozszerzeniami OpenCL są kompilowane przy użyciu clang do pośredniego pseudokodu LLVM (LLVM IR), który następnie jest konwertowany na pośrednią reprezentację jąder OpenCL w formacie SPIR-V. Rdzenie w reprezentacji SPIR-V są przekazywane do Mesa, tłumaczone do formatu NIR, optymalizowane i przekazywane do NIR-do-DXIL w celu wygenerowania shaderów obliczeniowych w formacie DXIL, odpowiednich do wykonywania na procesorach graficznych przy użyciu środowiska uruchomieniowego opartego na DirectX 12.
Zamiast Clover, implementacji OpenCL używanej w Mesie, zaproponowano nowe środowisko wykonawcze OpenCL, umożliwiające bardziej bezpośrednie konwersje do API DirectX 12.

Collabora opracowuje dodatek do uruchamiania OpenCL i OpenGL na DirectX

Sterowniki OpenCL i OpenGL są przygotowywane przy użyciu interfejsu Gallium dostępnego w Mesa, który umożliwia tworzenie sterowników bez wchodzenia w szczegóły specyficzne dla OpenGL i tłumaczenie wywołań OpenGL w istocie bliżej prymitywów graficznych, na których działają nowoczesne procesory graficzne. Sterownik Gallium, akceptuje polecenia OpenGL i podczas korzystania z tłumacza NIR-na-DXIL
generuje bufory poleceń, które są wykonywane na GPU przy użyciu sterownika D3D12.

Źródło: opennet.ru

Dodaj komentarz