Het Khronos-consortium, dat zich bezighoudt met de ontwikkeling van grafische standaarden,
specificatie , dat de API definieert voor toegang tot de grafische en rekenmogelijkheden van GPU's. De nieuwe specificatie heeft de correcties die in de afgelopen twee jaar zijn verzameld, samengevoegd en . Drivers die de nieuwe versie van Vulkan ondersteunen, zijn reeds bedrijven Intel, , ARM, Imagination Technologies en . In Mesa is ondersteuning voor Vulkan 1.2 aangeboden voor drivers van (AMD-kaarten) en (Intel). Ondersteuning voor Vulkan 1.2 is ook geĆÆmplementeerd in de debugger , en de voorbeeldset .
Belangrijkste :
- HLSL DXC
HLSL, inclusief wiskundige typen, controlestromen, functies, verzamelingen, resource-types, naamruimten, Shader Model 6.2, structuren en methoden, maar maakt ook het gebruik van Vulkan-specifieke extensies mogelijk, zoals VKRay van NVIDIA. In de HLSL-modus boven Vulkan is het gelukt om spellen zoals Destiny 2, Red Dead Redemption II, Assassinās Creed Odyssey en Tomb Raider te laten draaien.
De specificatie - SPIR-V 1.5 SPIR-V impliceert een afzonderlijke fase voor het compileren van shaders naar een tussenliggende representatie, wat het mogelijk maakt om front-end systemen te creƫren voor verschillende hoge-level programmeertalen. Op basis van verschillende hoge-level implementaties wordt er een enkele tussenliggende code gegenereerd die door de OpenGL-, Vulkan- en OpenCL-drivers kan worden gebruikt zonder ingebouwde shadercompilers.
De belangrijkste API van Vulkan omvat 23 extensies, die de prestaties hebben verbeterd, de beeldkwaliteit hebben verhoogd en de ontwikkeling eenvoudiger hebben gemaakt. Onder de toegevoegde extensies zijn:
- Chronologische semaforen
- (Timeline semaphore), uniforme synchronisaties met de host en apparaatwachtrijen (laten ƩƩn primitief toe voor alle richtingen synchronisatie tussen het apparaat en de host, zonder aparte primitieve VkFence en VkSemaphore te gebruiken). Nieuwe semaforen worden gepresenteerd met een monotonisch toenemend 64-bits waarde, die kan worden gevolgd en bijgewerkt in meerdere threads.

- Mogelijkheid om in shaders numerieke typen met lagere precisie te gebruiken;
- HLSL-compatibele variant van geheugenschema;
- Bindless resources, waardoor de beperking op het aantal beschikbare resources voor shaders wordt opgeheven door gebruik te maken van een gedeelde virtuele ruimte van systeemgeheugen en GPU-geheugen;
- , dat definieert hoe parallel uitgevoerde threads toegang kunnen krijgen tot gedeelde gegevens en synchronisatieoperaties;
- voor hergebruik van layout-descriptors in meerdere shaders;
- Bufferreferenties.
Volledige lijst van toegevoegde extensies:
- (Timeline semaphore), uniforme synchronisaties met de host en apparaatwachtrijen (laten ƩƩn primitief toe voor alle richtingen synchronisatie tussen het apparaat en de host, zonder aparte primitieve VkFence en VkSemaphore te gebruiken). Nieuwe semaforen worden gepresenteerd met een monotonisch toenemend 64-bits waarde, die kan worden gevolgd en bijgewerkt in meerdere threads.
- meer dan 50 nieuwe structuren en 13 functies;
- Ingekorte versies van de specificatie zijn voorbereid voor typische doelplatforms, die het werken op platforms vergemakkelijken waarvoor nog niet alle extensies worden ondersteund en die het mogelijk maken om zonder selectieve activatie van basisfunctionaliteiten van de Vulkan API te werken.
- Het project ter bevordering van draagbaarheid met andere grafische API's is voortgezet. Bijvoorbeeld, in Vulkan zijn extensies voorgesteld die de conversie van OpenGL mogelijk maken (), OpenCL (, ), OpenGL ES (GLOVE, Angle) en DirectX (, ) via de Vulkan API, evenals vice versa om de werking van Vulkan op platforms zonder native ondersteuning te garanderen ( en voor werking bovenop OpenGL en DirectX, en gfx-rs voor werking bovenop Metal).
Voor verbeterde compatibiliteit met DirectX en HLSL zijn extensies toegevoegd
VK_KHR_host_query_reset, VK_KHR_uniform_buffer_standard_layout, VK_EXT_scalar_block_layou, VK_KHR_separate_stencil_usage, VK_KHR_separate_depth_stencil_layouts, evenals specifieke HLSL-mogelijkheden in SPIR-V.
Toekomstige plannen omvatten de ontwikkeling van extensies voor machine learning, ray tracing, video codering en decoding, ondersteuning van VRS (variable-rate shading) en Mesh-shaders.
Ter herinnering, de Vulkan API vergemakkelijkt radicale vereenvoudiging van stuurprogramma's, verplaatst de generatie van GPU-opdrachten naar de applicatiekant, biedt de mogelijkheid om debug-lagen aan te sluiten, unificeert de API voor verschillende platforms en past vooraf gecompileerde tussenliggende code-representaties toe voor uitvoering aan de GPU-zijde. Om een hoge prestaties en voorspelbaarheid te waarborgen, biedt Vulkan applicaties middelen voor directe controle over GPU-operaties en ingebouwde ondersteuning voor meervoudige verwerking van GPU-opdrachten, waardoor de overhead veroorzaakt door de stuurprogramma aanzienlijk wordt verminderd, en de functies die door het stuurprogramma worden gerealiseerd, aanzienlijk worden vereenvoudigd en voorspelbaarder worden. Bijvoorbeeld, operaties zoals geheugbeheer en foutafhandeling, die in OpenGL aan de stuurprogramma-zijde worden gerealiseerd, zijn in Vulkan naar de applicatieniveau verplaatst.
Vulkan dekt alle beschikbare platforms en biedt een uniforme API voor desktop-, mobiele systemen en het web, waardoor het mogelijk is om ƩƩn gemeenschappelijke API voor verschillende GPU's en toepassingsgebieden te gebruiken. Dankzij de gelaagde architectuur van Vulkan, die het creƫren van tools mogelijk maakt die met elke GPU werken, kunnen hardwarefabrikanten standaardtools gebruiken voor codeverificatie, debugging en profilering bij de ontwikkeling. Voor het creƫren van shaders wordt een nieuwe draagbare tussenliggende representatie SPIR-V aangeboden, gebaseerd op LLVM en gebruikmakend van technologieƫn die gemeenschappelijk zijn met OpenCL. Voor het beheer van apparaten en schermen in Vulkan wordt een WSI (Window System Integration) interface aangeboden, die ongeveer dezelfde taken vervult als EGL in OpenGL ES. WSI-ondersteuning is direct beschikbaar in Wayland - alle applicaties die Vulkan gebruiken, kunnen worden uitgevoerd in omgevingen met ongewijzigde Wayland-servers. De mogelijkheid om via WSI te werken is ook gewaarborgd voor Android, X11 (met DRI3), Windows, Tizen, macOS en iOS.
Bron: opennet.ru


