È stato pubblicato lo standard grafico Vulkan 1.3

Dopo due anni di lavoro, il consorzio Khronos, che sviluppa standard grafici, ha pubblicato la specifica Vulkan 1.3, che definisce un'API per l'accesso alle capacità grafiche e computazionali delle GPU. La nuova specifica incorpora correzioni e ampliamenti accumulati nel corso di due anni. Si segnala che i requisiti della specifica Vulkan 1.3 sono progettati per l'hardware grafico della classe OpenGL ES 3.1, il che permetterà di garantire il supporto del nuovo API grafico su tutte le GPU che supportano Vulkan 1.2. Si prevede di pubblicare il toolkit Vulkan SDK a metà febbraio. Oltre alla specifica principale, sono previsti ulteriori ampliamenti per dispositivi mobili e desktop di fascia media e alta, il cui supporto sarà realizzato nell'ambito della revisione "Vulkan Milestone".

Contemporaneamente, è stato presentato un piano per l'implementazione del supporto della nuova specifica e delle ulteriori estensioni nelle schede grafiche e nei driver dei dispositivi. Prodotti con supporto per Vulkan 1.3 sono in preparazione per il rilascio dalle aziende Intel, AMD, ARM e NVIDIA. Ad esempio, AMD ha annunciato un prossimo supporto di Vulkan 1.3 nella serie di schede grafiche AMD Radeon RX Vega, così come in tutte le schede basate sull'architettura AMD RDNA. NVIDIA si prepara a pubblicare driver con supporto di Vulkan 1.3 per Linux e Windows. ARM aggiungerà il supporto di Vulkan 1.3 nelle GPU Mali.

Novità principali:

  • È stato implementato il supporto per passaggi di rendering semplificati (Streamlining Render Passes, VK_KHR_dynamic_rendering), che consentono di iniziare il rendering senza la creazione di passaggi di rendering e oggetti del framebuffer.
  • Sono state aggiunte nuove estensioni per semplificare la gestione della compilazione del pipeline grafico (pipeline, un insieme di operazioni che converte i primitiva grafica vettoriale e le texture in una rappresentazione del pixel).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 — aggiungono ulteriori stati dinamici per ridurre il numero di oggetti di stato compilati e allegati.
    • VK_EXT_pipeline_creation_cache_control — fornisce strumenti avanzati di gestione di quando e come compilare i pipeline.
    • VK_EXT_pipeline_creation_feedback — fornisce informazioni sui pipeline compilati per semplificare il profiling e il debug.
  • Alcune funzionalità sono state convertite da opzionali a obbligatorie. Ad esempio, l'implementazione dei buffer di indirizzamento (VK_KHR_buffer_device_address) e il modello di memoria Vulkan, che definisce come i thread eseguiti in parallelo possano accedere a dati condivisi e operazioni di sincronizzazione, sono ora obbligatori.
  • Sono stati forniti strumenti di controllo preciso per i sottogruppi (VK_EXT_subgroup_size_control), grazie ai quali i produttori possono fornire supporto per più dimensioni dei sottogruppi, mentre gli sviluppatori possono scegliere la dimensione richiesta.
  • È stato introdotto l'estensione VK_KHR_shader_integer_dot_product, che può essere utilizzata per ottimizzare il funzionamento dei framework di machine learning, grazie all'accelerazione hardware delle operazioni di prodotto scalare.
  • In totale, sono state incluse 23 nuove estensioni:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • VK_KHR_maintenance4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_synchronization2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formats
    • VK_EXT_extended_dynamic_state
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_image_robustness
    • 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_subgroup_size_control
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • È stato aggiunto un nuovo tipo di oggetti VkPrivateDataSlot. Sono state implementate 37 nuove istruzioni e oltre 60 strutture.
  • È stata aggiornata la specifica SPIR-V 1.6, che definisce una rappresentazione intermedia universale per tutte le piattaforme dei shader, che può essere utilizzata sia per la grafica che per i calcoli paralleli. SPIR-V implica l'assegnazione di una fase separata per la compilazione dei shader nella rappresentazione intermedia, il che consente di creare frontend per vari linguaggi di alto livello. Sulla base di diverse implementazioni di alto livello, viene generato un codice intermedio unificato, che può essere utilizzato dai driver OpenGL, Vulkan e OpenCL senza l'uso di un compilatore di shader incorporato.
  • È stata proposta una concezione di profili di compatibilità. Google ha preparato per primo un profilo di base (baseline profile) per la piattaforma Android, che semplificherà la definizione a livello di dispositivo del supporto per le funzionalità avanzate di Vulkan, oltrepassando la specifica Vulkan 1.0. Per la maggior parte dei dispositivi, il supporto per il profilo sarà garantito senza la necessità di installare aggiornamenti OTA.

Ricordiamo che l'API Vulkan si distingue per la semplificazione radicale dei driver, il trasferimento della generazione dei comandi GPU lato applicazione, la possibilità di collegare strati di debug, l'unificazione dell'API per diverse piattaforme e l'uso di una rappresentazione intermedia precompilata del codice per l'esecuzione sulla GPU. Per garantire elevate prestazioni e prevedibilità, Vulkan fornisce alle applicazioni strumenti per la gestione diretta delle operazioni GPU e supporto integrato per l'elaborazione multithread dei comandi GPU, il che minimizza il sovraccarico introdotto dal driver, mentre le funzionalità implementate lato driver sono notevolmente semplificate e diventano più prevedibili. Ad esempio, operazioni come la gestione della memoria e la gestione degli errori, implementate in OpenGL lato driver, in Vulkan sono spostate a livello dell'applicazione.

Vulkan copre tutte le piattaforme disponibili e offre una singola API per sistemi desktop, mobili e Web, consentendo di utilizzare una comune API per diverse GPU e aree di applicazione. Grazie all'architettura multilivello di Vulkan, che prevede la creazione di strumenti in grado di funzionare con qualsiasi GPU, i produttori di hardware possono utilizzare strumenti standardizzati per il controllo del codice, il debug e il profiling durante lo sviluppo. Per la creazione di shader è proposta una nuova rappresentazione intermedia portabile SPIR-V, basata su LLVM e che utilizza tecnologie di base comuni a OpenCL. Per la gestione dei dispositivi e degli schermi in Vulkan è disponibile un'interfaccia WSI (Window System Integration), che risolve in modo simile le stesse problematiche dell'EGL in OpenGL ES. Il supporto per WSI è disponibile direttamente in Wayland: tutte le applicazioni che utilizzano Vulkan possono essere eseguite in un ambiente non modificato. server Wayland. Anche per Android, X11 (con DRI3), Windows, Tizen, macOS e iOS è garantita la possibilità di operare tramite WSI.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster