Wulkan (API) - Vulkan (API)

Vulkan
Vulkan logo.svg
Pierwotny autor (autorzy) AMD , DICE (oryginalna konstrukcja płaszcza )
Deweloper(zy) Grupa Khronos (wariant podarowany i pochodny, jako Vulkan)
Pierwsze wydanie 16 lutego 2016 ; 5 lat temu ( 2016-02-16 )
Wersja stabilna 1.2.195 (05.10.2021 ; 7 dni temu ) [±] ( 05.10.2021 )
Magazyn
Napisane w C
System operacyjny Android , Linux , Fuksja , BSD Unix , QNX , Windows , Nintendo Switch , Stadia , Tizen , macOS , IOS , Raspberry Pi
Rodzaj Grafika 3D i obliczeniowe API
Licencja Licencja Apache 2.0
Strona internetowa vulkan .org

Vulkan jest nisko nad głową , cross-platform API , otwarty standard dla grafiki 3D i informatyki . Vulkan jest przeznaczony do wysokowydajnych aplikacji graficznych 3D w czasie rzeczywistym, takich jak gry wideo i media interaktywne . W porównaniu z OpenGL , Direct3D 11 i metal , Vulkan ma na celu zapewnienie większej wydajności i bardziej zrównoważone procesora i karty graficznej zużycie i zapewnia API znacznie niższym poziomie i równoległe wykonywanie innych zadań do zastosowania. Oprócz mniejszego wykorzystania procesora, Vulkan został zaprojektowany, aby umożliwić programistom lepszą dystrybucję pracy między wieloma rdzeniami procesora .

Vulkan został po raz pierwszy ogłoszony przez organizację non-profit Khronos Group na GDC 2015. Interfejs API Vulkan był początkowo określany jako „ inicjatywa OpenGL nowej generacji ” lub „OpenGL next” przez Khronos, ale używanie tych nazw zostało przerwane, gdy ogłoszono Vulkan .

Vulkan jest pochodną i zbudowany na składniki AMD „s Mantle API, który został przekazany przez AMD do Khronos z intencją dawania Khronos fundament, na którym ma się rozpocząć rozwijanie API niskiego poziomu, że mogą ujednolicenia w całej branży.

Vulkan nie jest wstecznie kompatybilny z OpenGL.

Cechy

OpenGL i Vulkan to interfejsy API renderowania. W obu przypadkach GPU wykonuje moduły cieniujące , podczas gdy procesor wykonuje wszystko inne.

Vulkan ma na celu zapewnienie wielu korzyści w stosunku do innych interfejsów API, a także jego poprzednika, OpenGL . Vulkan oferuje niższe koszty ogólne, bardziej bezpośrednią kontrolę nad GPU i mniejsze zużycie procesora. Ogólna koncepcja i zestaw funkcji Vulkan jest podobny do Mantle, który został później przyjęty przez Microsoft z Direct3D 12 i Apple z Metal.

Zamierzone zalety Vulkan w porównaniu z interfejsami API poprzedniej generacji obejmują następujące elementy.

Zunifikowany interfejs API

Pojedynczy interfejs API dla komputerów stacjonarnych i mobilnych urządzeń graficznych, podczas gdy wcześniej były one podzielone odpowiednio na OpenGL i OpenGL ES .

Platforma krzyżowa

Dostępność w wielu nowoczesnych systemach operacyjnych w przeciwieństwie do Direct3D 12; podobnie jak OpenGL, Vulkan API nie jest ograniczony do jednego systemu operacyjnego lub formatu urządzenia. Od chwili wydania Vulkan działa na systemach Android , Linux , BSD Unix , QNX , Nintendo Switch , Raspberry Pi , Stadia , Fuchsia , Tizen , Windows 7 , Windows 8 i Windows 10 ( MoltenVK zapewnia darmową licencyjną obsługę systemów iOS i macOS oparty na metalu)

Mniejsze zużycie procesora

Zmniejszone obciążenie sterownika, zmniejszające obciążenie procesora.

Zmniejszone obciążenie procesorów dzięki użyciu przetwarzania wsadowego , dzięki czemu procesor może wykonywać więcej obliczeń lub renderowania niż w innym przypadku.

Przyjazny dla wielu wątków

Lepsze skalowanie na procesorach wielordzeniowych. Direct3D 11 i OpenGL 4 zostały początkowo zaprojektowane do użytku z jednordzeniowymi procesorami i otrzymały tylko rozszerzenia do wykonania na wielu rdzeniach. Nawet gdy programiści aplikacji korzystają z rozszerzeń, interfejs API regularnie nie skaluje się dobrze na wielu rdzeniach.

Prekompilowane shadery

OpenGL używa języka wysokiego poziomu GLSL do pisania shaderów , co zmusza każdy sterownik OpenGL do zaimplementowania własnego kompilatora dla GLSL. Jest to następnie wykonywane w czasie wykonywania aplikacji, aby przetłumaczyć moduły cieniujące programu na kod maszynowy GPU. W przeciwieństwie do sterowników Vulkan, mają pobierać shadery już przetłumaczone na pośredni format binarny o nazwie SPIR-V (Standard Portable Intermediate Representation), analogiczny do formatu binarnego, w którym shadery HLSL są kompilowane w Direct3D . Umożliwiając wstępną kompilację shaderów, zwiększa się szybkość inicjalizacji aplikacji i można używać większej liczby shaderów na scenę. Sterownik Vulkan musi tylko przeprowadzić optymalizację i generowanie kodu dla GPU, co skutkuje łatwiejszą konserwacją sterowników i ostatecznie mniejszymi pakietami sterowników (obecnie dostawcy GPU nadal muszą uwzględniać OpenGL/CL). Twórcy aplikacji mogą teraz ukrywać zastrzeżony kod shadera.

Inni

  • Ujednolicone zarządzanie jądrami obliczeniowymi i graficznymi shaderami , eliminując potrzebę używania oddzielnego obliczeniowego interfejsu API w połączeniu z graficznym interfejsem API.
  • Ray tracing przez rozszerzenie VK_KHR_ray_tracing

OpenGL kontra Vulkan

OpenGL Vulkan
Jedna globalna maszyna stanu Oparte na obiektach bez stanu globalnego
Państwo jest powiązane z jednym kontekstem Wszystkie koncepcje stanu są zlokalizowane w buforze poleceń
Operacje mogą być wykonywane tylko sekwencyjnie Możliwe jest programowanie wielowątkowe
Pamięć GPU i synchronizacja są zwykle ukryte Wyraźna kontrola nad zarządzaniem pamięcią i synchronizacją
Obszerne sprawdzanie błędów Sterowniki Vulkan nie sprawdzają błędów w czasie wykonywania;
istnieje warstwa walidacji dla programistów

NVIDIA zauważa, że ​​„OpenGL jest nadal świetną opcją w wielu przypadkach użycia, ponieważ ma znacznie mniejszą złożoność i obciążenie konserwacyjne niż Vulkan, a w wielu przypadkach nadal zapewnia doskonałą ogólną wydajność”.

AMD twierdzi, że: „Vulkan obsługuje kontrolę zbliżoną do metalu, umożliwiając wyższą wydajność i lepszą jakość obrazu w systemach Windows 7, Windows 8.1, Windows 10 i Linux. Żaden inny graficzny interfejs API nie oferuje tak potężnej kombinacji kompatybilności z systemem operacyjnym, funkcji renderowania, i wydajność sprzętu."

Wersje

Wulkan 1,1

Na targach SIGGRAPH 2016 Khronos ogłosił, że Vulkan otrzyma wsparcie dla automatycznych funkcji wielu procesorów graficznych, podobnie do tego, co oferuje Direct3D 12. Obsługa wielu procesorów graficznych zawarta w API eliminuje potrzebę SLI lub Crossfire, która wymaga, aby karty graficzne były ten sam model. API multi-GPU zamiast tego pozwala API na inteligentny podział obciążenia między dwa lub więcej zupełnie różnych procesorów graficznych. Na przykład zintegrowane procesory graficzne zawarte w procesorze mogą być używane w połączeniu z wysokiej klasy dedykowanym procesorem graficznym, aby nieznacznie zwiększyć wydajność.

7 marca 2018 r. Grupa Khronos wydała Vulkan 1.1. Ta pierwsza duża aktualizacja interfejsu API ujednoliciła kilka rozszerzeń, takich jak wiele widoków, grupy urządzeń, udostępnianie między procesami i interfejsami API, zaawansowana funkcjonalność obliczeniowa, obsługa HLSL i obsługa YCbCr. Jednocześnie przyniósł również lepszą kompatybilność z DirectX 12, wyraźną obsługę wielu procesorów graficznych, obsługę ray tracingu i położył podwaliny pod następną generację procesorów graficznych. Wraz z Vulkanem 1.1 SPIR-V został zaktualizowany do wersji 1.3.

Wulkan 1.2

15 stycznia 2020 r. Vulkan 1.2 został wydany przez Grupę Khronos. Ta druga duża aktualizacja API integruje 23 dodatkowe, powszechnie używane, sprawdzone rozszerzenia Vulkan z podstawowym standardem Vulkan. Niektóre z najważniejszych funkcji to „semafory osi czasu ułatwiające zarządzanie synchronizacją”, „formalny model pamięci do precyzyjnego definiowania semantyki operacji synchronizacji i pamięci w różnych wątkach” oraz „indeksowanie deskryptorów umożliwiające ponowne wykorzystanie układów deskryptorów przez wiele programów cieniujących” . Dodatkowe funkcje Vulkan 1.2 poprawiają jego elastyczność, jeśli chodzi o implementację innych graficznych interfejsów API, takich jak „ujednolicony standardowy układ bufora”, „układ bloków skalarnych” i „użycie oddzielnych szablonów”.

Planowane funkcje

Wydając OpenCL 2.2, Khronos Group ogłosił, że OpenCL będzie w miarę możliwości zbiegał się z Vulkan, aby umożliwić elastyczność wdrażania oprogramowania OpenCL w ramach obu interfejsów API. Zostało to teraz zademonstrowane przez Adobe Premiere Rush przy użyciu kompilatora open source clspv do kompilowania znacznych ilości kodu jądra OpenCL C w celu uruchomienia w środowisku uruchomieniowym Vulkan w celu wdrożenia w systemie Android.

Historia

Grupa Khronos rozpoczęła projekt stworzenia graficznego API nowej generacji w lipcu 2014 roku na spotkaniu inauguracyjnym w Valve . Na SIGGRAPH 2014 projekt został ogłoszony publicznie wraz z naborem uczestników.

Według US Patent and Trademark Office, znak towarowy Vulkan został zgłoszony 19 lutego 2015 r.

Vulkan został oficjalnie nazwany i ogłoszony na Game Developers Conference 2015, chociaż spekulacje i pogłoski krążyły wokół nowego API istniały już wcześniej i określały go jako „ glNext ”.

2015

Na początku 2015 roku firma LunarG (sfinansowana przez Valve ) opracowała i zaprezentowała sterownik Linux dla Intela, który umożliwiał kompatybilność z Vulkan na zintegrowanych kartach graficznych z serii HD 4000, mimo że sterowniki Mesa o otwartym kodzie źródłowym nie były w pełni kompatybilne z OpenGL 4.0 do końca tego roku. Nadal istnieje możliwość obsługi Sandy Bridge, ponieważ obsługuje obliczenia przez Direct3D11.

10 sierpnia 2015 r. Google ogłosił, że przyszłe wersje Androida będą obsługiwać Vulkan. Android 7.x „Nougat” uruchomił wsparcie dla Vulkan 22 sierpnia 2016 r. Android 8.0 „Oreo” ma pełne wsparcie.

18 grudnia 2015 r. firma Khronos Group ogłosiła, że ​​wersja 1.0 specyfikacji Vulkan jest prawie ukończona i zostanie wydana, gdy dostępne będą zgodne sterowniki.

2016

Specyfikacja i open-source Vulkan SDK zostały wydane 16 lutego 2016 roku.

2018

26 lutego 2018 r. firma Khronos Group ogłosiła, że ​​interfejs API Vulkan stał się dostępny dla wszystkich w systemie macOS i iOS za pośrednictwem biblioteki MoltenVK , która umożliwia uruchamianie Vulkan na platformie Metal . Inne nowe rozwiązania zostały pokazane na SIGGRAPH 2018. Wcześniej MoltenVK był rozwiązaniem zastrzeżonym i licencjonowanym komercyjnie, ale Valve porozumiało się z deweloperem Brenwill Workshop Ltd w sprawie otwartego oprogramowania MoltenVK na licencji Apache 2.0, w wyniku czego biblioteka jest teraz dostępna na GitHub . Valve ogłosiło również, że od 26 lutego 2018 r. Dota 2 może działać na macOS przy użyciu API Vulkan, które jest oparte na MoltenVK.

2019

25 lutego 2019 r. Grupa robocza Vulkan Safety Critical (SC) została ogłoszona, aby wprowadzić akcelerację GPU Vulkan do branż o krytycznym znaczeniu dla bezpieczeństwa.

Usługa Google do strumieniowego przesyłania gier w chmurze Stadia korzysta z Vulkan na serwerach z systemem Linux i procesorami graficznymi AMD .

2020

15 stycznia 2020 r. został wydany Vulkan 1.2.

Wraz z wydaniem Vulkan 1.2, Khronos Group opublikował post na blogu, w którym uznano, że obsługa HLSL w Vulkan osiągnęła status „produkcyjny gotowy”, biorąc pod uwagę ulepszenia w kompilatorze Microsoft DXC i kompilator glslang Khronos oraz nowe funkcje w Vulkan 1.2, które poprawiają obsługę HLSL .

3 lutego 2020 r. Fundacja Raspberry Pi ogłosiła, że ​​pracuje nad sterownikiem open source Vulkan dla swojego Raspberry Pi , popularnego komputera jednopłytkowego. 20 czerwca 2020 r. inżynier grafiki ujawnił, że stworzył jeden po dwóch latach pracy, który był w stanie uruchomić VkQuake3 z prędkością ponad 100 klatek na sekundę na małym komputerze.

17 marca 2020 r. firma Khronos Group wydała rozszerzenia Ray Tracing , przyjmując wcześniej istniejącą implementację Nvidii z niewielkimi zmianami. 23 listopada 2020 r. te rozszerzenia Ray Tracing zostały sfinalizowane.

24 listopada 2020 r. Fundacja Raspberry Pi ogłosiła, że ​​ich sterownik dla Raspberry Pi 4 jest zgodny z Vulkan 1.0.

Wsparcie wśród dostawców

Zrzut ekranu vulkaninfoprzedstawiający informacje o obsługiwanych instancjach Vulkan

Wstępne specyfikacje mówiły, że Vulkan będzie działał na sprzęcie, który obecnie obsługuje OpenGL ES 3.1 lub OpenGL 4.x i nowsze. Ponieważ obsługa Vulkan wymaga nowych sterowników graficznych, niekoniecznie oznacza to, że każde istniejące urządzenie obsługujące OpenGL ES 3.1 lub OpenGL 4.x będzie miało dostępne sterowniki Vulkan.

Intel, Nvidia i AMD

Wszyscy trzej najwięksi dostawcy komputerów PC udostępniają bezpłatnie implementacje Vulkan API w postaci sterowników dla systemów Linux i Windows. Vulkan 1.1 jest obsługiwany przez nowsze linie sprzętowe, takie jak Intel Skylake i wyższe, AMD GCN 2nd i wyższe oraz Nvidia Kepler i wyższe. AMD, Arm, Imagination Technologies, Intel, Nvidia i Qualcomm obsługują rzeczywisty sprzęt od drugiej połowy 2018 r. za pomocą sterowników Vulkan 1.1. Mesa 18.1 obsługuje ze sterownikami RADV i ANVIL AMD i Intel. Aktualny stan w Mesa 3D RADV i ANVIL patrz Mesamatrix.

Google Android

Wiele urządzeń z systemem Android obsługuje specyfikację OpenGL ES. Przykłady Android 7.0 Nougat (Vulkan 1.0). Android 9.0 Pie i Android 10 dla Vulkan 1.1.

jabłko

Od 3 czerwca 2021 r. nie ma natywnej obsługi Vulkan API dostarczanej przez urządzenia Apple. Wsparcie dla iOS i macOS nie zostało ogłoszone przez Apple. Podjęto próbę obejścia tego problemu za pomocą biblioteki MoltenVK o otwartym kodzie źródłowym, która zapewnia implementację Vulkan w oparciu o interfejs API grafiki Metal na urządzeniach z systemem iOS i macOS. Ma jednak pewne ograniczenia.

Qualcomm

Serie Adreno 5xx (2018) i 6xx dla mobilnych platform Qualcomm Snapdragon (Snapdragon 820 itp.) Procesory graficzne obsługują Vulkan 1.1 za pośrednictwem pakietu SDK Adreno GPU. SDK jest oparty na IDE Android Studio i Android NDK jest potrzebny do wykorzystania wszystkich jego funkcji.

Zobacz też

Uwagi

Bibliografia

Dalsza lektura

Zewnętrzne linki