È stato pubblicato lo standard grafico Vulkan 1.2

Il consorzio Khronos, che si occupa dello sviluppo di standard grafici,
ha pubblicato la specifica Vulkan 1.2, definendo l'API per accedere alle capacità grafiche e computazionali delle GPU. La nuova specifica ha incorporato le correzioni accumulate negli ultimi due anni e estensione. I driver con supporto per la nuova versione di Vulkan sono già hanno rilasciato , Intel, AMD, ARM, Imagination Technologies e NVIDIA. In Mesa, il supporto per Vulkan 1.2 è stato offerto per i driver RADV (schede AMD) e ANV (Intel). Il supporto per Vulkan 1.2 è stato implementato anche nel debugger RenderDoc 1.6, LunarG Vulkan SDK e nel set di esempi Vulkan-Samples.

Principali novità:

  • È stata portata alla piena implementazione del linguaggio di programmazione degli shader HLSL, sviluppato da Microsoft per DirectX. Il supporto di HLSL in Vulkan consente di utilizzare gli stessi shader HLSL nelle applicazioni basate su Vulkan e DirectX, semplificando anche la traduzione da HLSL a SPIR-V. Per la compilazione degli shader si consiglia di utilizzare il compilatore standard
    DXC, che è stato rilasciato da Microsoft nel 2017 e si basa sulla tecnologia LLVM. Il supporto per Vulkan è implementato tramite un backend separato che consente di tradurre HLSL in una rappresentazione intermedia degli shader SPIR-V. L'implementazione copre non solo tutte le capacità integrate
    HLSL, inclusi tipi matematici, flussi di controllo, funzioni, insiemi, tipi di risorse, spazi dei nomi, Shader Model 6.2, strutture e metodi, ma consente anche di utilizzare estensioni specifiche di Vulkan, come VKRay di NVIDIA. In modalità HLSL sopra Vulkan sono riusciti a far funzionare giochi come Destiny 2, Red Dead Redemption II, Assassin’s Creed Odyssey e Tomb Raider.

    È stato pubblicato lo standard grafico Vulkan 1.2
  • È stata aggiornata la specifica SPIR-V 1.5, che definisce una rappresentazione intermedia universale per tutte le piattaforme, applicabile sia alla grafica che ai calcoli paralleli.
    SPIR-V prevede una fase separata di compilazione degli shader in rappresentazione intermedia, consentendo di creare frontend per vari linguaggi di alto livello. Basandosi su diverse implementazioni di alto livello, viene generato un codice intermedio unificato, utilizzabile dai driver OpenGL, Vulkan e OpenCL senza l'uso di un compilatore di shader integrato.

    È stato pubblicato lo standard grafico Vulkan 1.2
  • Nell'API Vulkan principale sono state incluse 23 estensioni, che hanno aumentato le prestazioni, migliorato la qualità della visualizzazione e semplificato lo sviluppo. Tra le estensioni aggiunte ci sono:
    • Sefamori temporali (Timeline semaphore), che unificano le sincronizzazioni con l'host e le code dei dispositivi (consentendo di utilizzare un solo primitivo per la sincronizzazione bidirezionale tra dispositivo e host, senza impiegare primitivi separati VkFence e VkSemaphore). I nuovi semafori sono rappresentati da un valore a 64 bit in crescita monotona, che può essere monitorato e aggiornato in più thread.
      È stato pubblicato lo standard grafico Vulkan 1.2
    • Possibilità di utilizzare nei shader tipi numerici a bassa precisione;
    • Versione compatibile con HLSL della disposizione della memoria;
    • Risorse non collegate (bindless), che rimuovono il limite sul numero di risorse disponibili per gli shader mediante l'uso di uno spazio virtuale condiviso tra la memoria di sistema e la memoria GPU;
    • Modello formale di memoria, che definisce come i thread eseguiti in parallelo possano accedere a dati e operazioni di sincronizzazione condivisi;
    • Indicizzazione dei descrittori per il riutilizzo dei descrittori in diversi shader;
    • Riferimenti ai buffer.

    Elenco completo delle estensioni aggiunte:

  • Aggiunto oltre 50 nuove strutture e 13 funzioni;
  • Sono state preparate versioni abbreviate delle specifiche per le piattaforme target più comuni, semplificando il lavoro su piattaforme che non supportano ancora tutte le estensioni e consentendo di evitare l'attivazione selettiva delle funzionalità di base dell'API Vulkan.
  • Il progetto per garantire la portabilità con altre API grafiche continua. Ad esempio, in Vulkan sono state proposte estensioni che consentono di tradurre OpenGL (Zink), OpenCL (clspv, clvk), OpenGL ES (GLOVE, Angle) e DirectX (DXVK, vkd3d) tramite l'API Vulkan, e viceversa, per garantire l'operatività di Vulkan su piattaforme senza il suo supporto nativo (gfx-rs e Ashes per funzionare sopra OpenGL e DirectX, MoltenVK e gfx-rs per funzionare sopra Metal).
    Per migliorare la compatibilità con DirectX e HLSL, sono state aggiunte estensioni
    VK_KHR_host_query_reset, VK_KHR_uniform_buffer_standard_layout, VK_EXT_scalar_block_layout, VK_KHR_separate_stencil_usage, VK_KHR_separate_depth_stencil_layouts, e sono state implementate funzionalità specifiche HLSL in SPIR-V.

Tra i progetti futuri si segnala lo sviluppo di estensioni per il machine learning, il ray tracing, la codifica e decodifica video, e supporto per VRS (variable-rate shading) e Mesh shaders.

Ricordiamo che l'API Vulkan è notevole semplificazione radicale dei driver, spostamento della generazione di comandi GPU nell'applicazione, possibilità di collegare layer di debug, unificazione delle API per diverse piattaforme e utilizzo di una rappresentazione intermedia precompilata del codice da eseguire sulla GPU. Per garantire alte prestazioni e prevedibilità, Vulkan offre alle applicazioni strumenti per gestire direttamente le operazioni della GPU e supporto integrato per l'elaborazione multithread dei comandi GPU, riducendo al minimo l'overhead introdotto dal driver, mentre le funzionalità implementate a livello di driver risultano notevolmente semplificate e più prevedibili. Ad esempio, operazioni come la gestione della memoria e la gestione degli errori, implementate in OpenGL a livello di driver, sono spostate a livello dell'applicazione in Vulkan.

Vulkan copre tutte le piattaforme disponibili e fornisce un'unica API per sistemi desktop, mobili e Web, permettendo di utilizzare una comune API per diverse GPU e aree di applicazione. Grazie all'architettura multilayer di Vulkan, che prevede la creazione di strumenti compatibili con qualsiasi GPU, i produttori di hardware possono utilizzare strumenti standard nella loro progettazione per testare il codice, il debug e il profiling. Per la creazione di shader viene suggerita una nuova rappresentazione intermedia portatile SPIR-V, basata su LLVM e che utilizza tecnologie condivise con OpenCL. Per la gestione di dispositivi e schermi, Vulkan offre un'interfaccia WSI (Window System Integration), che risolve essenzialmente le stesse problematiche dell'EGL in OpenGL ES. Il supporto per WSI è nativo in Wayland: tutte le applicazioni che utilizzano Vulkan possono essere eseguite in ambienti server Wayland non modificati. La possibilità di lavorare tramite WSI è garantita anche per Android, X11 (con DRI3), Windows, Tizen, macOS e iOS.

Fonte: opennet.ru

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