Grafische standaard Vulkan 1.2 gepubliceerd

Het Khronos-consortium, dat grafische standaarden ontwikkelt,
gepubliceerd specificatie Vulkan 1.2, die een API definieert voor toegang tot de grafische en computermogelijkheden van de GPU. De nieuwe specificatie omvat correcties die over een periode van twee jaar zijn verzameld uitbreiding. Er zijn al stuurprogramma's beschikbaar die de nieuwe versie van Vulkan ondersteunen vrijgelaten Intel-bedrijf, AMD, ARM, verbeeldingstechnologieën en NVIDIA. Mesa biedt Vulkan 1.2-ondersteuning voor stuurprogramma's RADV (AMD-kaarten) en ANV (Inlichtingen). Ondersteuning voor Vulkan 1.2 is ook geïmplementeerd in de debugger RenderDoc 1.6, LunarG Vulkan SDK en een reeks voorbeelden Vulkan-monsters.

De belangrijkste innovaties:

  • Bracht naar jou implementatie van een shader-programmeertaal totdat deze klaar is voor wijdverbreid gebruik HLSL, ontwikkeld door Microsoft voor DirectX. HLSL-ondersteuning in Vulkan maakt het mogelijk om dezelfde HLSL-shaders te gebruiken in applicaties gebaseerd op Vulkan en DirectX, en vereenvoudigt ook de vertaling van HLSL naar SPIR-V. Om shaders te compileren, wordt aangeraden een standaard compiler te gebruiken
    DXC, dat in 2017 door Microsoft werd geopend en gebaseerd is op LLVM-technologie. Vulkan-ondersteuning wordt geïmplementeerd via een aparte backend, waarmee u HLSL kunt vertalen naar een tussenweergave van SPIR-V-shaders. De implementatie omvat niet alleen alle ingebouwde mogelijkheden
    HLSL, inclusief wiskundige typen, besturingsstromen, functies, sets, resourcetypen, 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 bovenop Vulkan was het mogelijk om het werk van games als Destiny 2, Red Dead Redemption II, Assassin's Creed Odyssey en Tomb Raider te organiseren.

    Grafische standaard Vulkan 1.2 gepubliceerd

  • Specificatie bijgewerkt SPIR-V 1.5, dat een tussenweergave van shaders definieert die universeel is voor alle platforms en kan worden gebruikt voor zowel grafisch als parallel computergebruik.
    SPIR-V omvat het scheiden van een afzonderlijke shader-compilatiefase in een tussenrepresentatie, waarmee u frontends kunt maken voor verschillende talen op hoog niveau. Op basis van verschillende implementaties op hoog niveau wordt afzonderlijk een enkele tussencode gegenereerd, die kan worden gebruikt door OpenGL-, Vulkan- en OpenCL-stuurprogramma's zonder gebruik te maken van de ingebouwde shader-compiler.

    Grafische standaard Vulkan 1.2 gepubliceerd

  • De kern van de Vulkan API bevat 23 extensies die de prestaties verbeteren, de weergavekwaliteit verbeteren en de ontwikkeling vereenvoudigen. Onder de toegevoegde extensies:
    • Chronologische seinpalen (Tijdlijn-semafoor), waardoor de synchronisatie met de host- en apparaatwachtrijen wordt verenigd (waardoor u één primitief kunt gebruiken voor omnidirectionele synchronisatie tussen het apparaat en de host, zonder afzonderlijke VkFence- en VkSemafoor-primitieven te gebruiken). Nieuwe semaforen worden weergegeven door een monotoon toenemende 64-bits waarde die over meerdere threads kan worden gevolgd en bijgewerkt.
      Grafische standaard Vulkan 1.2 gepubliceerd

    • Mogelijkheid om numerieke typen met verminderde precisie in shaders te gebruiken;
    • HLSL-compatibele optie voor geheugenindeling;
    • Ongebonden bronnen (bindloos), waardoor de beperking op het aantal beschikbare bronnen voor shaders wordt opgeheven door gebruik te maken van de gedeelde virtuele ruimte van systeemgeheugen en GPU-geheugen;
    • Formeel geheugenmodel, dat definieert hoe gelijktijdige threads toegang kunnen krijgen tot gedeelde gegevens en synchronisatiebewerkingen;
    • Indexering van descriptoren om lay-outbeschrijvingen over meerdere shaders te hergebruiken;
    • Bufferkoppelingen.

    Volledige lijst met toegevoegde extensies:

  • Toegevoegd door meer dan 50 nieuwe structuren en 13 functies;
  • Er zijn verkorte versies van de specificatie voorbereid voor typische doelplatforms, waardoor het werk op platforms waarvoor nog niet alle extensies worden ondersteund, wordt vereenvoudigd en we het zonder selectieve activering van de basismogelijkheden van de Vulkan API kunnen stellen.
  • Er wordt verder gewerkt aan het project om portabiliteit met andere grafische API's te garanderen. Vulkan biedt bijvoorbeeld extensies die OpenGL-vertaling mogelijk maken (Zink), OpenCL (clspv, clvk), OpenGL ES (HANDSCHOEN, Hoek) en DirectX (DXVK-extensie, vkd3d) via de Vulkan API, en omgekeerd ook om Vulkan in staat te stellen op platforms te werken zonder de eigen ondersteuning (gfx-rs и As voor het werken bovenop OpenGL en DirectX, MoltenVK en gfx-rs voor het werken op Metal).
    Extensies toegevoegd om de compatibiliteit met DirectX en HLSL te verbeteren
    VK_KHR_host_query_reset, VK_KHR_uniform_buffer_standard_layout, VK_EXT_scalar_block_layout, VK_KHR_separate_stencil_usage, VK_KHR_separate_diepte_stencil_layouts en SPIR-V implementeert specifieke HLSL-mogelijkheden.

Plannen voor de toekomst omvatten de ontwikkeling van uitbreidingen voor machine learning, ray tracing, videocodering en -decodering, ondersteuning voor VRS (variable-rate shading) en Mesh shaders.

Bedenk dat de Vulkan API opmerkelijk radicale vereenvoudiging van stuurprogramma's, het verplaatsen van het genereren van GPU-opdrachten naar de applicatiekant, de mogelijkheid om debugging-lagen met elkaar te verbinden, unificatie van de API voor verschillende platforms en het gebruik van een vooraf gecompileerde tussenweergave van code voor uitvoering aan de GPU-kant. Om hoge prestaties en voorspelbaarheid te garanderen, biedt Vulkan applicaties directe controle over GPU-bewerkingen en native ondersteuning voor GPU multi-threading, waardoor de overhead van de driver wordt geminimaliseerd en de mogelijkheden aan de driverzijde veel eenvoudiger en voorspelbaarder worden. Bewerkingen zoals geheugenbeheer en foutafhandeling, geïmplementeerd in OpenGL aan de stuurprogrammazijde, worden bijvoorbeeld verplaatst naar het applicatieniveau in Vulkan.

Vulkan omvat alle beschikbare platforms en biedt één enkele API voor desktop, mobiel en internet, waardoor één gemeenschappelijke API kan worden gebruikt voor meerdere GPU's en applicaties. Dankzij de meerlaagse architectuur van Vulkan, wat betekent dat tools werken met elke GPU, kunnen OEM's tijdens de ontwikkeling gebruik maken van industriestandaard tools voor codebeoordeling, debuggen en profilering. Voor het maken van shaders wordt een nieuwe draagbare tussenweergave, SPIR-V, voorgesteld, gebaseerd op LLVM en die kerntechnologieën deelt met OpenCL. Om apparaten en schermen te besturen biedt Vulkan de WSI-interface (Window System Integration), die ongeveer dezelfde problemen oplost als EGL in OpenGL ES. WSI-ondersteuning is kant-en-klaar beschikbaar in Wayland - alle applicaties die Vulkan gebruiken, kunnen draaien in een omgeving met ongewijzigde Wayland-servers. De mogelijkheid om via WSI te werken is ook aanwezig voor Android, X11 (met DRI3), Windows, Tizen, macOS en iOS.

Bron: opennet.ru

Voeg een reactie