Grafische standaard Vulkan 1.3 gepubliceerd

Na twee jaar werken heeft het grafische standaardenconsortium Khronos de Vulkan 1.3-specificatie gepubliceerd, die een API definieert voor toegang tot de grafische en computermogelijkheden van GPU's. De nieuwe specificatie omvat correcties en uitbreidingen die over een periode van twee jaar zijn verzameld. Opgemerkt wordt dat de vereisten van de Vulkan 1.3-specificatie zijn ontworpen voor grafische apparatuur van de OpenGL ES 3.1-klasse, die ondersteuning zal garanderen voor de nieuwe grafische API in alle GPU's die Vulkan 1.2 ondersteunen. De Vulkan SDK-tools zullen naar verwachting medio februari worden gepubliceerd. Naast de hoofdspecificatie is het de bedoeling om extra uitbreidingen aan te bieden voor mobiele en desktopapparaten uit het midden- en high-end segment, die zullen worden ondersteund als onderdeel van de “Vulkan Milestone”-editie.

Tegelijkertijd wordt een plan gepresenteerd om ondersteuning voor de nieuwe specificatie en aanvullende uitbreidingen in grafische kaarten en apparaatstuurprogramma's te implementeren. Intel, AMD, ARM en NVIDIA bereiden zich voor op het uitbrengen van producten die Vulkan 1.3 ondersteunen. AMD heeft bijvoorbeeld aangekondigd dat het binnenkort Vulkan 1.3 zal ondersteunen in de AMD Radeon RX Vega-serie grafische kaarten, evenals in alle kaarten gebaseerd op de AMD RDNA-architectuur. NVIDIA bereidt zich voor op het publiceren van stuurprogramma's met ondersteuning voor Vulkan 1.3 voor Linux en Windows. ARM zal ondersteuning voor Vulkan 1.3 toevoegen aan Mali GPU's.

Belangrijkste innovaties:

  • Ondersteuning voor vereenvoudigde renderingpassen (Streamlining Render Passes, VK_KHR_dynamic_rendering) is geïmplementeerd, waardoor u kunt beginnen met renderen zonder renderingpassen en framebufferobjecten te maken.
  • Er zijn nieuwe uitbreidingen toegevoegd om het beheer van de compilatie van grafische pijplijnen te vereenvoudigen (pijplijn, een reeks bewerkingen die primitieven en texturen van vectorafbeeldingen omzet in pixelrepresentaties).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - voeg extra dynamische statussen toe om het aantal gecompileerde en gekoppelde statusobjecten te verminderen.
    • VK_EXT_pipeline_creation_cache_control - Biedt geavanceerde controles over wanneer en hoe pijplijnen worden gecompileerd.
    • VK_EXT_pipeline_creation_feedback - Biedt informatie over gecompileerde pijplijnen om profilering en foutopsporing eenvoudiger te maken.
  • Een aantal functies zijn overgezet van optioneel naar verplicht. De implementatie van bufferreferenties (VK_KHR_buffer_device_address) en het Vulkan-geheugenmodel, dat definieert hoe gelijktijdige threads toegang kunnen krijgen tot gedeelde gegevens en synchronisatiebewerkingen, zijn nu bijvoorbeeld verplicht.
  • Er wordt een fijnmazig subgroepbeheer (VK_EXT_subgroup_size_control) geboden, zodat leveranciers ondersteuning kunnen bieden voor meerdere subgroepgroottes en ontwikkelaars de gewenste grootte kunnen selecteren.
  • Er is de VK_KHR_shader_integer_dot_product-extensie beschikbaar, die kan worden gebruikt om de prestaties van machine learning-frameworks te optimaliseren dankzij hardwareversnelling van dot-productbewerkingen.
  • Er zijn in totaal 23 nieuwe uitbreidingen inbegrepen:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamische_weergave
    • VK_KHR_format_feature_flags2
    • VK_KHR_onderhoud4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_synchronisatie2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formats
    • VK_EXT_extended_dynamic_state
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_image_robuustheid
    • 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_subgroep_grootte_controle
    • VK_EXT_texel_buffer_uitlijning
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Een nieuw objecttype VkPrivateDataSlot toegevoegd. Er werden 37 nieuwe commando's en meer dan 60 structuren geïmplementeerd.
  • De SPIR-V 1.6-specificatie is bijgewerkt om een ​​tussenliggende shader-representatie te definiëren 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.
  • Het concept van compatibiliteitsprofielen wordt voorgesteld. Google is de eerste die een basisprofiel voor het Android-platform vrijgeeft, waardoor het gemakkelijker wordt om het ondersteuningsniveau voor geavanceerde Vulkan-mogelijkheden te bepalen op een apparaat dat verder gaat dan de Vulkan 1.0-specificatie. Voor de meeste apparaten kan profielondersteuning worden geboden zonder OTA-updates te installeren.

Laten we niet vergeten dat de Vulkan API opmerkelijk is vanwege de radicale vereenvoudiging van stuurprogramma's, de overdracht van het genereren van GPU-opdrachten naar de applicatiekant, de mogelijkheid om debug-lagen met elkaar te verbinden, de unificatie van de API voor verschillende platforms en het gebruik van een vooraf gecompileerde tussenweergave van code voor uitvoering aan de GPU-zijde. 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