Light Mode

Preskocit na obsah

Vulkan

Z Wikipedie, otevrene encyklopedie
Tento clanek je o rozhrani pro pocitacovou grafiku. Dalsi vyznamy jsou uvedeny na strance Vulkan (rozcestnik).
Vulkan
VyvojarKhronos Group
Prvni vydani16. unora 2016
Aktualni verze1.4.342 (30. ledna 2026)
Operacni systemMicrosoft Windows
Linux
Android
iOS
macOS
Platformamultiplatformni
Vyvijeno vC++ a C
LicenceApache License, Version 2.0
licence MIT
Creative Commons Uvedte puvod 4.0 Mezinarodni
Webwww.vulkan.org
Nektera data mohou pochazet z datove polozky.

Vulkan je otevrene standardni API nove generace, ktere je urcene pro vysoce vykonny pristup k grafice a vypoctum v grafickem procesoru GPU. Bylo vypusteno a zdokonalovano sdruzenim Khronos Group v roce 2016.[1]

Vulkan se pouziva pri vyvoji pocitacovych her a mobilnich zarizeni. Jeho jedinecnost spociva v tom, ze umoznuje vyvojarum psat aplikace, ktere lze pouzit na mnoha ruznych platformach. Vulkan obsahuje nejnovejsi graficke technologie, jako napriklad ray tracing, integraci do vyrobnich ovladacu NVIDIA pro NVIDIA GeForce, RTX a Quadro pro Windows a Linux, NVIDIA Shield a Jetson embedded computing platform pro Android nebo Linux.[2]

Vyjimecnost

[editovat | editovat zdroj]

Vulkan poskytuje mnoho vyhod ve srovnani s jinymi API. Nabizi nizsi naklady, primejsi ovladani GPU a mensi zatez procesoru.

Mezi vyhody Vulkanu oproti predchozi generaci API patri:

  • Vulkan je skutecne multiplatformni API. Je k dispozici na operacnich systemech Windows (od verze 7), Linux, Android, Fuchsia, Tizen, Raspberry Pi OS, QNX a Stadia. Prostrednictvim MoltenVK je Vulkan mozno pouzit i na MacOS, tvOS a iOS.
  • Jedna se o nizkourovnove graficke API, ktere poskytuje primy pristup k hardwaru GPU a umoznuje efektivnejsi vyuziti systemovych zdroju, coz vede k nizsi zatezi procesoru, nizsi spotrebe pameti a vyssi stabilite vykonu.[3]
  • Vulkan podporuje multithreading. Znamena to, ze je navrzen s ohledem na vyhody modernich vicejadrovych procesoru a umoznuje efektivnejsi vyuziti procesorovych zdroju.
  • Umoznuje aplikacim odesilat vice prikazu na GPU soucasne, coz se nazyva asynchronni odesilani prikazu. Tento proces muze pomoci snizit zpomaleni a zlepsit vykon aplikace.
  • Vulkan poskytuje explicitni spravu pameti, coz umoznuje aplikacim prime zvyrazneni a uvolneni pameti primo na GPU, coz snizuje zatez procesoru.
  • Vyuziva pipeline architekturu (je to system, ktery shromazduje, organizuje a dodava data), a tim poskytuje vetsi flexibilitu a kontrolu nad procesem vykreslovani grafiky.[4]
  • Vulkan obsahuje radu nastroju a API pro ladeni a profilovani aplikaci, vcetne urovni kontroly a nastroju pro analyzu vykonu.
  • Je navrzen tak, aby byl kompatibilni s jinymi grafickymi API, jako jsou OpenGL a DirectX. To usnadnuje prenos aplikaci z jednoho API do druheho.[5]

OpenGL a Vulkan

[editovat | editovat zdroj]

Vulkan je jasne odlisny od OpenGL a ma prednost pred nim v tom, ze:

  1. efektivneji rozdeluje zdroje mezi jadra (plati to pro procesor i grafickou kartu)
  2. OpenGL nacita jadra CPU stridave: teprve po uplnem nacteni prvniho jadra vstupuje do hry druhe. Rovnomerne zatezuje vsechna dostupna jadra - spotreba energie klesa a snimkova frekvence se zvysuje.
  3. Vulkan API umoznuje herni aplikaci samotne rozhodnout, kdy a jak vyuzit GPU a jak spravovat pamet -- na rozdil od OpenGL, kde tuto ulohu plni ovladac.[6]
  4. odstraneni starsich pozadavku zjednodusuje navrh API a umoznuje jasnejsi smerovani k pouziti Vulkanu.[7]
  5. Pouziti SPIR-V jako ciloveho programoveho kodu, ktery preklada text napsany v programovacim jazyce do sady strojovych kodu (compiler target), zjednodusuje praci ovladacu a umoznuje vetsi flexibilitu a spolehlivost rozhrani jazyka.[8]

Rozdil mezi OpenGL a Vulkan je videt v tomto videu.

Pri malem poctu polozek je rozdil ve vykonu neviditelny, ale pokud se jejich pocet zvysi, Vulkan zacne nesmirne prevysovat OpenGL. OpenGL vyuziva pouze dve jadra, zatimco Vulkan pouziva vsechna ctyri a zatezuje je pomerne rovnomerne.

Rozvoj API

[editovat | editovat zdroj]

Od doby vzniku API Vulkan bylo vydano nekolik jeho verzi. Hlavni z nich jsou 1.0, 1.1, 1.2 a 1.3:

Vulkan 1.0

Je to puvodni vydani Vulkanu, ktere predstavila spolecnost Khronos Group v unoru 2016 spolu s experimentalnimi ovladaci pro graficke karty AMD a NVIDIA. Tato verze zahrnovala zakladni sadu funkci, vcetne podpory nizkourovnoveho grafickeho API, multithreadingu a asynchronniho odesilani prikazu.[9][10]

Vulkan 1.1

V tomto vydani, predstavenem 7. brezna 2018, bylo pridano nekolik novych funkci a rozsireni. Vulkan 1.1 nabizi dve nove siroke funkce: chraneny obsah a operace s podskupinami.

Mnoho rozsireni je zamereno na virtualni realitu nebo jakoukoli zvysenou vsestrannost, vcetne ,,simultaneous rendering" pro vice druhu obrazku (zrychleni multiprojekce), ,,cross-API and cross-application interoperability", sirsi vypocetni schopnosti, podpora YCbCr a skupiny zarizeni pro homogenni konfigurace s vice GPU. Zlepsila se take interakce s DirectX 12, vyznamna podpora sledovani paprsku a SPIR-V byl dokonce aktualizovan na verzi 1.3.[11]

Vulkan 1.2

15. ledna 2020 Khronos Group predstavil Vulkan 1.2, ktery je z velke casti zameren na programatory a integruje 23 dalsich casto pouzivanych osvedcenych rozsireni. Mezi rozsireni patri ,,timeline semaphores", ,,buffer device address", ,,descriptor indexing", ,,host query reset", ,,driver properties" a dalsi.[12]

Pro Vulkan 1.2 Khronos dosahl plne podpory HLSL, coz umoznuje snadnejsi prenos souboru nebo multiplatformni vyvoj her mezi platformami Microsoft - DirectX 12 a rodinou konzoli Xbox, a vsim ostatnim, co Vulkan podporuje.[12]

Vulkan 1.3

25. ledna 2022 byla vydana nova verze Vulkan 1.3, ktery se zameruje na snizeni fragmentace. Mezi nove funkce ve Vulkan 1.3 patri dynamicky rendering, vylepsene synchronizacni API a profily zarizeni.[13]

  1. | Vulkan | NVIDIA Developer | Ghostarchive. ghostarchive.org [online]. [cit. 2023-04-26]. Dostupne v archivu porizenem z originalu dne 2021-10-20.
  2. | Vulkan Modern GPU API. NVIDIA Developer [online]. 2015-12-02 [cit. 2023-04-26]. Dostupne online. (anglicky)
  3. | vulkan_best_practice_for_mobile_developers. vulkan_best_practice_for_mobile_developers [online]. [cit. 2023-04-26]. Dostupne v archivu porizenem dne 2023-04-26. (anglicky)
  4. | Khronos Group. Vulkan 1.3 Specification [online]. [cit. 2023-04-26]. Dostupne online.
  5. | LunarG. "Vulkan SDK Version Compatibility" (PDF). [online]. [cit. 2023-04-27]. Dostupne online.
  6. | PHD, Svatoslav Kubin. Vulkan API Vse, co potrebujete vedet. Gadgetshowto [online]. [cit. 2023-04-26]. Dostupne online.
  7. | "Vulkan Overview." Khronos Group, 2015 [online]. [cit. 2023-04-27]. Dostupne online.
  8. | "Khronos Group. "Vulkan Overview." Khronos Group, 2015 [online]. [cit. 2023-04-27]. Dostupne online.
  9. | Khronos Group. "Vulkan 1.0 Reference Guide." Yandex, 2016 [online]. [cit. 2023-04-27]. Dostupne online.
  10. | Opublikovan graficheskii standart Vulkan 1.0. www.opennet.ru [online]. [cit. 2023-04-26]. Dostupne online.
  11. | OH, Nate. Vulkan 1.1 Specification Released: Open-source Tools, SDKs, and Launch Driver Support. www.anandtech.com [online]. [cit. 2023-04-26]. Dostupne v archivu porizenem dne 2023-04-26.
  12. 1 2 Vulkan 1.2 Arrives With An Eye On Greater Performance, Better Compatibility With Other 3D APIs On Top. www.phoronix.com [online]. [cit. 2023-04-26]. Dostupne online. (anglicky)
  13. | Khronos Strengthens Vulkan Ecosystem with Release of Vulkan 1.3, Public Roadmap and Profiles. The Khronos Group [online]. 2022-01-25 [cit. 2023-04-26]. Dostupne online. (anglicky)

Externi odkazy

[editovat | editovat zdroj]
  • Obrazky, zvuky ci videa k tematu Vulkan na Wikimedia Commons