Opublikowano standard graficzny Vulkan 1.3

Po dwóch latach pracy konsorcjum Khronos, zajmujące się opracowywaniem standardów graficznych, opublikowało specyfikację Vulkan 1.3, określającą API do dostępu do graficznych i obliczeniowych możliwości GPU. Nowa specyfikacja obejmuje poprawki i rozszerzenia gromadzone przez dwa lata. Zauważono, że wymagania specyfikacji Vulkan 1.3 są przeznaczone dla sprzętu graficznego klasy OpenGL ES 3.1, co umożliwi wsparcie nowego API graficznego we wszystkich GPU wspierających Vulkan 1.2. Narzędzia Vulkan SDK planowane są do publikacji w połowie lutego. Oprócz podstawowej specyfikacji planowane są dodatkowe rozszerzenia dla urządzeń mobilnych i stacjonarnych średniej oraz wyższej klasy, które będą wspierane w ramach edycji „Vulkan Milestone”.

Jednocześnie przedstawiono plan wdrożenia wsparcia nowej specyfikacji i dodatkowych rozszerzeń w kartach graficznych i sterownikach urządzeń. Produkty wspierające Vulkan 1.3 są przygotowywane do wydania przez firmy Intel, AMD, ARM oraz NVIDIA. Na przykład, firma AMD ogłosiła rychłe zapewnienie wsparcia Vulkan 1.3 w serii kart graficznych AMD Radeon RX Vega oraz we wszystkich kartach opartych na architekturze AMD RDNA. Firma NVIDIA przygotowuje się do publikacji sterowników wspierających Vulkan 1.3 dla systemów Linux i Windows. Firma ARM doda wsparcie dla Vulkan 1.3 w GPU Mali.

Główne nowości:

  • Zrealizowano wsparcie uproszczonych przejść renderowania (Streamlining Render Passes, VK_KHR_dynamic_rendering), które pozwalają na rozpoczęcie renderowania bez tworzenia przejść renderowania i obiektów ramki buforowej.
  • Dodano nowe rozszerzenia upraszczające zarządzanie kompilacją grafiki konweiera (pipeline, zestaw operacji przekształcających wektorowe prymitywy graficzne i tekstury w reprezentację pikseli).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 — dodają dodatkowe dynamiczne stany w celu zmniejszenia liczby kompilowanych i dołączanych obiektów stanu.
    • VK_EXT_pipeline_creation_cache_control — zapewnia zaawansowane narzędzia do zarządzania tym, kiedy i jak kompilować konweier.
    • VK_EXT_pipeline_creation_feedback — dostarcza informacje o skompilowanych konweierach w celu uproszczenia profilowania i debugowania.
  • Kilka możliwości zostało przeniesionych z opcjonalnych do obowiązkowych. Na przykład teraz obowiązkowe jest wdrożenie adresów buforów (VK_KHR_buffer_device_address) oraz modelu pamięci Vulkan, który określa, jak równolegle wykonywane wątki mogą uzyskiwać dostęp do współdzielonych danych i operacji synchronizacji.
  • Zostały wprowadzone narzędzia do precyzyjnego zarządzania podgrupami (VK_EXT_subgroup_size_control), które pozwalają producentom na wsparcie różnych rozmiarów podgrup, a programistom na wybór żądanego rozmiaru.
  • Wprowadzono rozszerzenie VK_KHR_shader_integer_dot_product, które można wykorzystać do optymalizacji pracy frameworków uczenia maszynowego dzięki sprzętowemu przyspieszeniu operacji iloczynu skalarnego.
  • W sumie w skład wchodzi 23 nowych rozszerzeń:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • VK_KHR_maintenance4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_synchronization2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formats
    • VK_EXT_extended_dynamic_state
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_image_robustness
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_private_data
    • 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
  • Wprowadzono nowy typ obiektów VkPrivateDataSlot. Zrealizowano 37 nowych komend oraz ponad 60 struktur.
  • Zaktualizowano specyfikację SPIR-V 1.6, definiującą uniwersalne dla wszystkich platform pośrednie przedstawienie shaderów, które może być stosowane zarówno w grafice, jak i w obliczeniach równoległych. SPIR-V zakłada wydzielenie osobnej fazy kompilacji shaderów do pośredniego przedstawienia, co pozwala na tworzenie frontendów dla różnych języków na wysokim poziomie. Na podstawie różnych wysokopoziomowych realizacji osobno generowany jest jednolity kod pośredni, który może być używany przez sterowniki OpenGL, Vulkan i OpenCL bez stosowania wbudowanego kompilatora shaderów.
  • Zaproponowano koncepcję profili zgodności. Pierwszym jest podstawowy profil (baseline profile) przygotowany przez firmę Google dla platformy Android, który uprości określenie poziomu wsparcia rozszerzonych funkcji Vulkan, wykraczających poza specyfikację Vulkan 1.0, na urządzeniu. Dla większości urządzeń wsparcie profilu będzie mogło być zapewnione bez instalacji aktualizacji OTA.

Przypominamy, że API Vulkan wyróżnia się drastycznym uproszczeniem sterowników, przeniesieniem generowania poleceń GPU na stronę aplikacji, możliwością podłączenia warstw debugujących, unifikacją API dla różnych platform oraz zastosowaniem wstępnie skompilowanego pośredniego przedstawienia kodu do wykonania po stronie GPU. Aby zapewnić wysoką wydajność i przewidywalność, Vulkan dostarcza aplikacjom narzędzia do bezpośredniego zarządzania operacjami GPU oraz wbudowaną obsługę wielowątkowego przetwarzania poleceń GPU, co minimalizuje narzuty stawiane przez sterownik, podczas gdy możliwości realizowane po stronie sterownika są znacząco uproszczone i stają się bardziej przewidywalne. Na przykład, takie operacje jak zarządzanie pamięcią i obsługa błędów, realizowane w OpenGL po stronie sterownika, w Vulkan zostały przeniesione na poziom aplikacji.

Vulkan obejmuje wszystkie dostępne platformy i dostarcza jednolite API dla systemów stacjonarnych, mobilnych oraz Web, pozwalając na wykorzystanie jednego wspólnego API dla różnych procesorów graficznych i dziedzin zastosowania. Dzięki warstwowej architekturze Vulkan, zakładającej tworzenie narzędzi współpracujących z dowolnymi GPU, producenci sprzętu mogą korzystać przy opracowywaniu typowych narzędzi do weryfikacji kodu, debugowania i profilowania. Do tworzenia shaderów zaproponowano nowe przenośne pośrednie przedstawienie SPIR-V, oparte na LLVM i wykorzystujące podstawowe technologie wspólne z OpenCL. Do zarządzania urządzeniami i ekranami w Vulkan oferowany jest interfejs WSI (Window System Integration), który rozwiązuje podobne problemy jak EGL w OpenGL ES. Obsługa WSI jest dostępna natywnie w Wayland — wszystkie aplikacje korzystające z Vulkan mogą być uruchamiane w środowisku niemodyfikowanych. serwerów Możliwość pracy poprzez WSI została również zapewniona dla Androida, X11 (z DRI3), Windows, Tizen, macOS i iOS.

Ź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