Pubblicato lo standard grafico Vulkan 1.3

Dopo due anni di lavoro, il consorzio di standard grafici Khronos ha pubblicato la specifica Vulkan 1.3, che definisce un'API per accedere alle capacità grafiche e di calcolo delle GPU. La nuova specifica incorpora correzioni ed estensioni accumulate in due anni. Va notato che i requisiti della specifica Vulkan 1.3 sono progettati per apparecchiature grafiche di classe OpenGL ES 3.1, che garantiranno il supporto per la nuova API grafica in tutte le GPU che supportano Vulkan 1.2. La pubblicazione degli strumenti Vulkan SDK è prevista per metà febbraio. Oltre alle specifiche principali, si prevede di offrire estensioni aggiuntive per dispositivi mobili e desktop di fascia media e alta, che saranno supportate come parte dell'edizione "Vulkan Milestone".

Allo stesso tempo, viene presentato un piano per implementare il supporto per la nuova specifica e ulteriori estensioni nelle schede grafiche e nei driver dei dispositivi. Intel, AMD, ARM e NVIDIA si stanno preparando a rilasciare prodotti che supportano Vulkan 1.3. AMD, ad esempio, ha annunciato che presto supporterà Vulkan 1.3 nella serie di schede grafiche AMD Radeon RX Vega, nonché in tutte le schede basate sull'architettura AMD RDNA. NVIDIA si sta preparando a pubblicare driver con supporto per Vulkan 1.3 per Linux e Windows. ARM aggiungerà il supporto per Vulkan 1.3 alle GPU Mali.

Principali innovazioni:

  • È stato implementato il supporto per i passaggi di rendering semplificati (Streamlining Render Passes, VK_KHR_dynamic_rendering), consentendo di avviare il rendering senza creare passaggi di rendering e oggetti framebuffer.
  • Sono state aggiunte nuove estensioni per semplificare la gestione della compilazione della pipeline grafica (pipeline, un insieme di operazioni che trasformano primitive e texture di grafica vettoriale in rappresentazioni pixel).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2: aggiungi ulteriori stati dinamici per ridurre il numero di oggetti di stato compilati e allegati.
    • VK_EXT_pipeline_creation_cache_control: fornisce controlli avanzati su quando e come vengono compilate le pipeline.
    • VK_EXT_pipeline_creation_feedback: fornisce informazioni sulle pipeline compilate per semplificare la profilazione e il debug.
  • Alcune funzionalità sono state trasferite da facoltative a obbligatorie. Ad esempio, l'implementazione dei riferimenti al buffer (VK_KHR_buffer_device_address) e il modello di memoria Vulkan, che definisce il modo in cui i thread simultanei possono accedere ai dati condivisi e alle operazioni di sincronizzazione, sono ora obbligatori.
  • Viene fornito un controllo granulare dei sottogruppi (VK_EXT_subgroup_size_control) in modo che i fornitori possano fornire supporto per più dimensioni di sottogruppi e gli sviluppatori possano selezionare la dimensione richiesta.
  • È stata fornita l'estensione VK_KHR_shader_integer_dot_product che può essere utilizzata per ottimizzare le prestazioni dei framework di machine learning grazie all'accelerazione hardware delle operazioni di prodotto punto.
  • Sono incluse un totale di 23 nuove espansioni:
    • VK_KHR_copy_commands2
    • VK_KHR_rendering_dinamico
    • VK_KHR_format_feature_flags2
    • VK_KHR_manutenzione4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_sincronizzazione2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formati
    • VK_EXT_extended_dynamic_state
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_image_robustezza
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_dati_privati
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_sottogruppo_dimensione_controllo
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Aggiunto un nuovo tipo di oggetto VkPrivateDataSlot. Sono stati implementati 37 nuovi comandi e più di 60 strutture.
  • La specifica SPIR-V 1.6 è stata aggiornata per definire una rappresentazione shader intermedia che sia universale per tutte le piattaforme e possa essere utilizzata sia per la grafica che per il calcolo parallelo. SPIR-V prevede la separazione di una fase separata di compilazione dello shader in una rappresentazione intermedia, che consente di creare frontend per vari linguaggi di alto livello. Sulla base di varie implementazioni di alto livello, viene generato separatamente un unico codice intermedio, che può essere utilizzato dai driver OpenGL, Vulkan e OpenCL senza utilizzare il compilatore shader integrato.
  • Viene proposto il concetto di profili di compatibilità. Google è il primo a rilasciare un profilo di base per la piattaforma Android, che renderà più semplice determinare il livello di supporto per le funzionalità Vulkan avanzate su un dispositivo oltre le specifiche Vulkan 1.0. Per la maggior parte dei dispositivi, il supporto del profilo può essere fornito senza installare gli aggiornamenti OTA.

Ricordiamo che l'API Vulkan si distingue per la radicale semplificazione dei driver, il trasferimento della generazione dei comandi GPU al lato applicazione, la capacità di collegare livelli di debug, l'unificazione dell'API per varie piattaforme e l'uso di un sistema precompilato rappresentazione intermedia del codice per l'esecuzione sul lato GPU. Per garantire prestazioni elevate e prevedibilità, Vulkan fornisce alle applicazioni il controllo diretto sulle operazioni della GPU e il supporto nativo per il multi-threading della GPU, che riduce al minimo il sovraccarico del driver e rende le funzionalità lato driver molto più semplici e prevedibili. Ad esempio, operazioni come la gestione della memoria e la gestione degli errori, implementate in OpenGL sul lato driver, vengono spostate a livello di applicazione in Vulkan.

Vulkan si estende su tutte le piattaforme disponibili e fornisce un'unica API per desktop, dispositivi mobili e Web, consentendo l'utilizzo di un'API comune su più GPU e applicazioni. Grazie all'architettura multistrato di Vulkan, che significa strumenti che funzionano con qualsiasi GPU, gli OEM possono utilizzare strumenti standard del settore per la revisione del codice, il debug e la profilazione durante lo sviluppo. Per la creazione di shader, viene proposta una nuova rappresentazione intermedia portatile, SPIR-V, basata su LLVM e che condivide le tecnologie principali con OpenCL. Per controllare dispositivi e schermi, Vulkan offre l'interfaccia WSI (Window System Integration), che risolve più o meno gli stessi problemi di EGL in OpenGL ES. Il supporto WSI è disponibile immediatamente in Wayland: tutte le applicazioni che utilizzano Vulkan possono essere eseguite in un ambiente di server Wayland non modificati. La possibilità di lavorare tramite WSI è prevista anche per Android, X11 (con DRI3), Windows, Tizen, macOS e iOS.

Fonte: opennet.ru

Aggiungi un commento