Deweloperzy Collabora zaprezentowali nowy kontroler Gallium dla Mesa

Kontroler Collabora

Niedawno Wydano deweloperów Collabora za pośrednictwem posta na blogu nowy kontroler galu dla Mesa, który implementuje warstwę pośrednią zorganizować OpenCL 1.2 i OpenGL 3.3 API o sterownikach obsługujących DirectX 12 (D3D12) oraz o tym, że ich kod źródłowy jest udostępniany na licencji MIT.

Proponowany kontroler będzie umożliwia korzystanie z Mesy na urządzeniach które początkowo nie są zgodne z OpenCL i OpenGL a także jako punkt wyjścia do przenoszenia aplikacji OpenGL / OpenCL do pracy na D3D12. Dla producentów GPU podsystem umożliwia obsługę OpenCL i OpenGL, a sterowniki obsługują tylko D3D12.

W swoim poście na blogu programiści udostępniają:

Przez ostatnie kilka miesięcy pracowaliśmy w Collabora nad dwoma ekscytującymi nowymi projektami i wreszcie nadszedł czas, aby podzielić się informacjami na ich temat ze światem ...

O planach natychmiastowychobserwuje się osiągnięcie pełnej akceptacji badań Obsługa OpenCL 1.2 i OpenGL 3.3, weryfikacja zgodności z aplikacjami i włączenie najlepszych praktyk w główny skład Mesy.

O nowym kontrolerze

Rozwój nowego kontrolera prowadzony jest we współpracy z inżynierami Microsoft opracowanie narzędzi D3D11On12 do zestawów transferowych D3D11 i biblioteki D3D12 D3D12TranslationLayer, a także standardowych graficznych, prymitywnych narzędzi na szczycie D3D12.

Implementacja zawiera sterownik Gallium, kompilator OpenCL, środowisko wykonawcze OpenCL i kompilator cieniowania NIR-to-DXIL, który konwertuje pośrednią reprezentację modułów cieniujących NIR używanych w Mesie na binarny format DXIL (język pośredni DirectX), zgodny z DirectX 12 i oparty na kodzie bitowym LLVM 3.7 (Microsoft's Kompilator DirectX Shader jest zasadniczo rozszerzonym rozwidleniem LLVM 3.7). Kompilator OpenCL został przygotowany w oparciu o doświadczenia z projektu LLVM i zestawu narzędzi SPIRV-LLVM.

Ta praca opiera się na wielu wcześniejszych pracach. Przede wszystkim budujemy to przy użyciu Mesa 3D, z interfejsem Gallium jako podstawą dla warstwy OpenGL i NIR jako podstawą dla kompilatora OpenCL. Używamy również LLVM i translatora Khronos SPIRV-LLVM jako kompilatora.

Ponadto wykorzystujemy doświadczenie firmy Microsoft w tworzeniu warstwy tłumaczeniowej D3D12, a także własne doświadczenie w tworzeniu Zink.

Kod źródłowy OpenCL jest kompilowany za pomocą clang do pośredniego pseudokodu LLVM (LLVM IR), który jest następnie konwertowany na pośrednią reprezentację jądra OpenCL w formacie SPIR-V.

Rdzenie w reprezentacji SPIR-V są przenoszone do Mesy, przetłumaczone na format NIR, zoptymalizowane i przeniesione do NIR-to-DXIL w celu wygenerowania odpowiednich obliczeniowych shaderów DXIL do wykonywania GPU przy użyciu środowiska wykonawczego opartego na DirectX 12. Zamiast używać Clover w implementacji OpenCL Mesa, zaproponowano nowe środowisko wykonawcze OpenCL, które pozwala na bardziej bezpośrednie konwersje do API DirectX 12.

Sterowniki OpenCL i OpenGL są przygotowywane przy użyciu interfejsu Gallium dostarczany w Mesa, co pozwala ominąć specyfikę OpenGL podczas tworzenia kontrolerów i tłumaczyć wywołania OpenGL na encje, które są bliższe graficznym prymitywom, na których działają nowoczesne GPU.

Sterownik Gallium akceptuje polecenia OpenGL i przy udziale translatora NIR-to-DXIL buduje bufory poleceń, które działają na GPU przy użyciu sterownika D3D12.

Wreszcie, programiści wspominają, że to wczesna praca i że spodziewają się, że administrator poprawi się z czasem:

To tylko zapowiedź i wiele pozostaje do zrobienia. W tej chwili mamy coś, co działa w niektórych przypadkach, ale dopiero zaczynamy zarysowywać powierzchnię.

Przede wszystkim musimy dostać się do poziomu funkcjonalności, do którego zmierzamy. Obecnie naszym celem jest przejście testów zgodności dla OpenCL 1.2 i OpenGL 3.3. Przed nami długa droga, ale przy odrobinie ciężkiej pracy i potu na pewno tam dotrzemy.

Jeśli chcesz dowiedzieć się więcej na ten temat, możesz sprawdzić oryginalną notatkę poniższy link lub dla tych, którzy są zainteresowani przejrzeniem kodu źródłowego, mogą to zrobić z tego linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.