Microsoft ha annunciato la versione di anteprima di Shader Model 6.10 e AgilitySDK 1.720, ampliando significativamente le capacità dell’API DX12 con nuove funzionalità pensate per gli sviluppatori.
Funzionalità migliorate in Shader Model 6.10 e AgilitySDK 1.720
L’ultima introduzione si basa sui precedenti miglioramenti relativi a Shader Model 6.9 e DXR 1.2, entrambi inclusi nella versione 1.619 di AgilitySDK. L’anteprima di AgilitySDK 1.720 presenta diverse nuove funzionalità per migliorare l’API DX12, descritte in dettaglio di seguito:
- Shader Model 6.10 (tramite DXC 1.10.2605.2):
- API di algebra lineare (linalg::Matrix)
- Indice di ondata di gruppo
- Memoria condivisa del gruppo variabile
- Parametri intrinseci del ray tracing:
- Posizioni degli oggetti triangolari
- ID cluster
Introduzione alle API di algebra lineare (linalg::Matrix)
Shader Model 6.10 introduce una suite completa di API per matrici sotto l’ombrello di LinAlg. Questa integrazione consente agli sviluppatori di implementare in modo efficiente tecniche di rendering neurale direttamente dai thread degli shader, migliorando le prestazioni della pipeline grafica in tempo reale. Inoltre, supporta operazioni di moltiplicazione matrice-matrice (MMA) ad alta larghezza di banda per applicazioni di machine learning ed elaborazione delle immagini, il tutto all’interno di un unico framework API.

Group Wave Index: Miglioramento delle prestazioni degli shader
Sono state aggiunte le nuove funzioni intrinseche GetGroupWaveIndex() e GetGroupWaveCount() allo Shader Model 6.10. Queste consentono a vari tipi di shader (compute, mesh, amplification e node) di ottenere informazioni sulla struttura a livello di onda all’interno di un gruppo di thread. La funzionalità offerta da GetGroupWaveIndex() fornisce l’indice dell’onda corrente, mentre GetGroupWaveCount() rivela il numero totale di onde in esecuzione nel gruppo. Questa capacità promuove la specializzazione del lavoro e la collaborazione tra le onde senza la necessità di soluzioni alternative inaffidabili, come il metodo obsoleto di divisione di SV_GroupIndex tramite WaveGetLaneCount(), che non garantisce un’affidabilità hardware universale.
Memoria condivisa a gruppi variabili: nuove possibilità
Un altro importante aggiornamento di Shader Model 6.10 è la rimozione del precedente limite di 32 KB (28 KB per gli shader mesh) per la memoria condivisa di gruppo. Grazie alla possibilità di visualizzare il limite hardware effettivo tramite una nuova query a runtime, MaxGroupSharedMemoryPerGroup, gli autori di shader possono ora utilizzare attributi personalizzati per specificare le dimensioni di memoria richieste dai loro shader. Questa transizione consente di sfruttare le capacità delle GPU moderne, garantendo al contempo la compatibilità del codice esistente con i limiti precedenti. Di conseguenza, gli sviluppatori possono ora implementare algoritmi avanzati, come il culling di tile di grandi dimensioni e carichi di lavoro complessi con matrici, senza essere vincolati dalle specifiche precedenti.
Esplorazione delle funzionalità di D3D12
API per elenchi di comandi asincroni in batch
L’introduzione dei comandi batch D3D12 risolve i problemi di serializzazione intrinseci riscontrati nei comandi precedenti come CopyBufferRegion, ClearUnorderedAccessViewFloat/Uinte ResolveSubresource, che venivano eseguiti in sequenza. Questa limitazione causava blocchi della GPU, ritardando le operazioni indipendenti. La nuova funzionalità Batch Asynchronous Command consente agli sviluppatori di utilizzare metodi avanzati di lista comandi che eliminano la serializzazione implicita, permettendo all’hardware di sovrapporre attività indipendenti. Gli sviluppatori ora hanno la libertà di sincronizzare esplicitamente con barriere migliorate solo quando necessario, facilitando una maggiore efficienza nei carichi di lavoro concorrenti.
Tutti i principali produttori di hardware, tra cui NVIDIA, AMD e Intel, supportano ora queste versioni di anteprima:
| Fornitore di hardware | Collegamenti driver |
| AMD | Software AMD: AgilitySDK Developer Preview Edition 25.30.41.02 |
| Intel | Intel Arc Graphics – Windows |
| NVIDIA | Per accedere ai driver in fase di sviluppo, si prega di contattare il proprio referente per le relazioni con gli sviluppatori. |
In termini di supporto hardware, NVIDIA offre una vasta gamma di funzionalità su tutta la sua linea di GPU RTX, mentre AMD e Intel limitano funzionalità specifiche alle loro offerte più recenti, tra cui le serie Arc B e RDNA 4 (Radeon RX 9000).Nello specifico, il Group Wave Index è supportato dalle GPU AMD RX 7000 e RX 9000, mentre NVIDIA prevede di implementarlo in una prossima versione. I futuri aggiornamenti di Intel includeranno anche il supporto per la nuova API di algebra lineare.
| AMD | Intel | NVIDIA | |
| linAlg::Matrix | Compatibile con i prodotti AMD Radeon RX serie 9000. | Previsto per una prossima pubblicazione. | Compatibile con tutto l’hardware RTX. |
| Indice di ondata di gruppo | Compatibile con le schede grafiche AMD Radeon RX serie 7000 e 9000. | Supportato dalle schede grafiche Intel Arc serie B. | Previsto per una prossima pubblicazione. |
| Memoria condivisa del gruppo variabile | Attualmente supporta il limite di memoria predefinito; si prevede che limiti più elevati saranno implementati nelle future versioni dei driver. | Supportato dalle schede grafiche Intel Arc serie B. | Compatibile con tutto l’hardware RTX, i valori variano a seconda del dispositivo. |
| Funzioni intrinseche del ray tracing: TriangleObjectPositions/ClusterID | Compatibile con le schede grafiche AMD Radeon RX serie 7000 e 9000. | Supportato dalle schede grafiche Intel Arc serie B. | Compatibile con tutto l’hardware RTX. |
| API per elenchi di comandi asincroni in batch | Compatibile con le schede grafiche AMD Radeon RX serie 7000 e 9000. | Supportato dalle schede grafiche Intel Arc serie B. | Compatibile con tutto l’hardware RTX. |
Per ulteriori informazioni e immagini relative a questo annuncio, consultare la fonte originale: Fonte e immagini.
Lascia un commento