Opublikowano standard graficzny Vulkan 1.3

Po dwóch latach prac konsorcjum standardów graficznych Khronos opublikowało specyfikację Vulkan 1.3, która definiuje API umożliwiające dostęp do możliwości graficznych i obliczeniowych procesorów graficznych. Nowa specyfikacja zawiera poprawki i rozszerzenia gromadzone przez dwa lata. Należy zauważyć, że wymagania specyfikacji Vulkan 1.3 są zaprojektowane dla sprzętu graficznego klasy OpenGL ES 3.1, co zapewni obsługę nowego API grafiki we wszystkich procesorach graficznych obsługujących Vulkan 1.2. Publikacja narzędzi Vulkan SDK planowana jest na połowę lutego. Oprócz głównej specyfikacji planowane jest zaoferowanie dodatkowych rozszerzeń dla urządzeń mobilnych i stacjonarnych ze średniej i wyższej półki, które będą obsługiwane w ramach edycji „Vulkan Milestone”.

Jednocześnie przedstawiony jest plan wdrożenia obsługi nowej specyfikacji oraz dodatkowych rozszerzeń w kartach graficznych i sterownikach urządzeń. Intel, AMD, ARM i NVIDIA przygotowują się do wypuszczenia produktów obsługujących Vulkan 1.3. Przykładowo AMD ogłosiło, że wkrótce będzie obsługiwać Vulkan 1.3 w serii kart graficznych AMD Radeon RX Vega, a także we wszystkich kartach opartych na architekturze AMD RDNA. NVIDIA przygotowuje się do opublikowania sterowników obsługujących Vulkan 1.3 dla systemów Linux i Windows. ARM doda obsługę Vulkan 1.3 do procesorów graficznych Mali.

Główne innowacje:

  • Zaimplementowano obsługę uproszczonych przebiegów renderowania (Streamlining Render Passes, VK_KHR_dynamic_rendering), dzięki czemu można rozpocząć renderowanie bez tworzenia przebiegów renderowania i obiektów bufora ramki.
  • Dodano nowe rozszerzenia, aby uprościć zarządzanie kompilacją potoków graficznych (potok, zestaw operacji zamieniających prymitywy i tekstury grafiki wektorowej na reprezentacje pikselowe).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - dodaj dodatkowe stany dynamiczne, aby zmniejszyć liczbę kompilowanych i dołączanych obiektów stanu.
    • VK_EXT_pipeline_creation_cache_control — zapewnia zaawansowaną kontrolę nad czasem i sposobem kompilacji potoków.
    • VK_EXT_pipeline_creation_feedback — zawiera informacje o skompilowanych potokach, ułatwiające profilowanie i debugowanie.
  • Wiele funkcji zostało przeniesionych z opcjonalnych na obowiązkowe. Na przykład implementacja odwołań do buforów (VK_KHR_buffer_device_address) i model pamięci Vulkan, który definiuje, w jaki sposób współbieżne wątki mogą uzyskać dostęp do współdzielonych danych i operacji synchronizacji, są teraz obowiązkowe.
  • Zapewniona jest szczegółowa kontrola podgrup (VK_EXT_subgroup_size_control), dzięki czemu dostawcy mogą zapewnić obsługę wielu rozmiarów podgrup, a programiści mogą wybrać wymagany rozmiar.
  • Udostępniono rozszerzenie VK_KHR_shader_integer_dot_product, które można wykorzystać do optymalizacji wydajności frameworków uczenia maszynowego dzięki sprzętowej akceleracji operacji iloczynu skalarnego.
  • Zawiera łącznie 23 nowe rozszerzenia:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • VK_KHR_konserwacja4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_synchronizacja2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formaty
    • VK_EXT_extended_dynamic_state
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_image_solidność
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_prywatne_dane
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_subgroup_size_control
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Dodano nowy typ obiektu VkPrivateDataSlot. Wdrożono 37 nowych poleceń i ponad 60 struktur.
  • Specyfikacja SPIR-V 1.6 została zaktualizowana w celu zdefiniowania pośredniej reprezentacji modułu cieniującego, która jest uniwersalna dla wszystkich platform i może być używana zarówno w grafice, jak i obliczeniach równoległych. SPIR-V polega na wydzieleniu osobnej fazy kompilacji modułu cieniującego na reprezentację pośrednią, co pozwala na tworzenie frontendów dla różnych języków wysokiego poziomu. W oparciu o różne implementacje wysokiego poziomu oddzielnie generowany jest pojedynczy kod pośredni, który może być używany przez sterowniki OpenGL, Vulkan i OpenCL bez użycia wbudowanego kompilatora shaderów.
  • Zaproponowano koncepcję profili zgodności. Google jako pierwszy udostępnił podstawowy profil dla platformy Android, który ułatwi określenie poziomu wsparcia zaawansowanych możliwości Vulkan na urządzeniu wykraczającym poza specyfikację Vulkan 1.0. W przypadku większości urządzeń obsługa profili może być zapewniona bez instalowania aktualizacji OTA.

Przypomnijmy, że Vulkan API wyróżnia się radykalnym uproszczeniem sterowników, przeniesieniem generowania poleceń GPU na stronę aplikacji, możliwością łączenia warstw debugujących, ujednoliceniem API dla różnych platform i wykorzystaniem prekompilowanego pośrednia reprezentacja kodu do wykonania po stronie GPU. Aby zapewnić wysoką wydajność i przewidywalność, Vulkan zapewnia aplikacjom bezpośrednią kontrolę nad działaniem procesora graficznego oraz natywną obsługę wielowątkowości procesora graficznego, co minimalizuje obciążenie sterownika i sprawia, że ​​możliwości po stronie sterownika są znacznie prostsze i bardziej przewidywalne. Na przykład operacje takie jak zarządzanie pamięcią i obsługa błędów, zaimplementowane w OpenGL po stronie sterownika, zostały przeniesione na poziom aplikacji w Vulkan.

Vulkan obejmuje wszystkie dostępne platformy i zapewnia pojedynczy interfejs API dla komputerów stacjonarnych, urządzeń mobilnych i Internetu, umożliwiając korzystanie z jednego wspólnego interfejsu API na wielu procesorach graficznych i aplikacjach. Dzięki wielowarstwowej architekturze Vulkan, co oznacza, że ​​narzędzia współpracują z dowolnym procesorem graficznym, producenci OEM mogą korzystać ze standardowych narzędzi branżowych do przeglądu kodu, debugowania i profilowania podczas programowania. Do tworzenia shaderów zaproponowano nową przenośną reprezentację pośrednią, SPIR-V, opartą na LLVM i współdzielącą podstawowe technologie z OpenCL. Do sterowania urządzeniami i ekranami Vulkan oferuje interfejs WSI (Window System Integration), który rozwiązuje w przybliżeniu te same problemy, co EGL w OpenGL ES. Obsługa WSI jest dostępna od razu w Wayland - wszystkie aplikacje korzystające z Vulkan mogą działać w środowisku niezmodyfikowanych serwerów Wayland. Możliwość pracy poprzez WSI dostępna jest także dla systemów Android, X11 (z DRI3), Windows, Tizen, macOS i iOS.

Źródło: opennet.ru

Dodaj komentarz