Livelli di funzionalità Direct3D

Per gestire la diversità delle schede video nei computer nuovi ed esistenti, Microsoft Direct3D 11 introduce il concetto di livelli di funzionalità. Questo argomento illustra i livelli di funzionalità Direct3D.

Ogni scheda video implementa un determinato livello di funzionalità Microsoft DirectX (DX) a seconda delle unità di elaborazione grafica installate. Nelle versioni precedenti di Microsoft Direct3D è possibile trovare la versione di Direct3D implementata dalla scheda video e quindi programmare l'applicazione di conseguenza.

Con Direct3D 11, viene introdotto un nuovo paradigma denominato livelli di funzionalità. I livelli di funzionalità sono set ben definiti di funzionalità GPU, Ad esempio, il livello di funzionalità 9_1 implementa la funzionalità implementata in Microsoft Direct3D 9, che espone le funzionalità dei modelli di shader ps_2_x e vs_2_x, mentre il livello di funzionalità 11_0 implementa la funzionalità implementata in Direct3D 11.

Ora, quando si crea un dispositivo, è possibile tentare di creare un dispositivo per il livello di funzionalità che si vuole richiedere. Se la creazione del dispositivo funziona, tale livello di funzionalità esiste, in caso contrario, l'hardware non supporta tale livello di funzionalità. È possibile provare a ricreare un dispositivo a un livello di funzionalità inferiore oppure scegliere di uscire dall'applicazione. Per altre info sulla creazione di un dispositivo, vedi la funzione D3D11CreateDevice .

Usando i livelli di funzionalità, è possibile sviluppare un'applicazione per Direct3D 9, Microsoft Direct3D 10 o Direct3D 11 e quindi eseguirla su hardware 9, 10 o 11 (con alcune eccezioni, ad esempio, le nuove 11 funzionalità non verranno eseguite su una scheda 9 esistente). Ecco un paio di altre proprietà di base dei livelli di funzionalità:

  • Una GPU che consente la creazione di un dispositivo soddisfa o supera la funzionalità di tale livello di funzionalità.
  • Un livello di funzionalità include sempre la funzionalità dei livelli di funzionalità precedenti o inferiori.
  • Un livello di funzionalità non implica prestazioni, ma solo funzionalità. Le prestazioni dipendono dall'implementazione hardware.
  • Scegliere un livello di funzionalità quando si crea un dispositivo Direct3D 11.

Per informazioni sulle limitazioni per la creazione di dispositivi di tipo nonhardware in determinati livelli di funzionalità, vedere Limitazioni per la creazione di warp e dispositivi di riferimento.

Per facilitare la scelta del livello di funzionalità da progettare, confrontare le funzionalità per ogni livello di funzionalità.

La sezione 10Level9 Reference elenca le differenze tra il comportamento dei vari metodi ID3D11Device e ID3D11DeviceContext a vari livelli di funzionalità 10Level9.

Formati di numeri di versione

Sono disponibili tre formati per le versioni Direct3D, i modelli shader e i livelli di funzionalità.

  • Le versioni Direct3D usano un punto; Ad esempio, Direct3D 12.0.
  • I modelli shader usano un punto; ad esempio, modello di shader 5.1.
  • I livelli di funzionalità usano un carattere di sottolineatura; ad esempio, livello di funzionalità 12_0.

Supporto delle funzionalità direct3D 12 (livelli di funzionalità da 12_2 a 11_0)

Per i livelli di funzionalità elencati sono disponibili le funzionalità seguenti. Le intestazioni nella riga superiore sono livelli di funzionalità Direct3D 12. Le intestazioni nella colonna a sinistra sono caratteristiche. Vedere anche Note a piè di pagina per le tabelle.

Funzionalità \ Livello di funzionalità 12_28 12_10 12_00 11_1 1 11_0
Modello shader 6.5 5.12 5.12 5.12 5.12
Modello di driver WDDM 2.0 1.x 1.x 1.x 1.x
Raytracing Livello 1.1 Facoltativo Facoltativo Facoltativo Facoltativo
Frequenza di ombreggiatura variabile Livello 2 Facoltativo Facoltativo Facoltativo Facoltativo
Mesh shader Livello 1 Facoltativo Facoltativo Facoltativo Facoltativo
Feedback del campionatore Livello 0.9 Facoltativo Facoltativo Facoltativo Facoltativo
Associazione di risorse Livello 3 Livello 3 Livello 3 Livello 3 Livello 1
Firma radice 1.1 1 1 1 1
Test dei limiti di profondità Facoltativo Facoltativo Facoltativo Facoltativo
Buffer di scrittura immediato Direct, Compute, Bundle Facoltativo Facoltativo Facoltativo Facoltativo
Bit di indirizzi virtuali GPU 4010 4010 4010
Risorse affiancate Livello 3 Livello 26 Livello 26 Facoltativo Facoltativo
Rasterizzazione conservativa Livello 3 Livello 16 Facoltativo Facoltativo No
Visualizzazioni ordine rasterizzatore Facoltativo Facoltativo No
Filtri min/max Facoltativo No
Buffer predefinito mappa N/D Facoltativo Facoltativo Facoltativo Facoltativo
Valore di riferimento dello stencil specificato dello shader Facoltativo Facoltativo Facoltativo Facoltativo No
Caricamenti della visualizzazione accesso non ordinato tipizzato 18 formati, più facoltativi 18 formati, più facoltativi 18 formati, più facoltativi 3 formati, più facoltativi 3 formati, più facoltativi
Geometry shader
Streaming in uscita
DirectCompute/Compute Shader
Hull e Domain Shader
Funzionalità \ Livello di funzionalità 12_28 12_10 12_00 11_1 1 11_0
Matrici di risorse trama
Matrici di risorse Cubemap
Compressione BC4/BC5
Compressione BC6H/BC7
Da alfa a copertura
Formati estesi (BGRA e così via)
Formato High Color 10 bit XR
Operazioni logiche (unione di output) Facoltativo1
Rasterizzazione indipendente dalla destinazione No
Destinazione di rendering multipla (MRT) con ForcedSampleCount 1 Facoltativo1
Slot UAV Livello9 64 64 64 8
UAV in ogni fase No
Funzionalità \ Livello di funzionalità 12_28 12_10 12_00 11_1 1 11_0
Numero massimo di campioni forzati per il rendering solo UAV 16 16 16 16 8
Offset del buffer costante e aggiornamenti parziali Facoltativo1
Formati a 16 bit per pixel (bpp) Facoltativo1
Dimensione massima trama 16384 16384 16384 16384 16384
Dimensione Max Cubemap 16384 16384 16384 16384 16384
Max Volume Extent 2048 2048 2048 2048 2048
Ripetizione massima trama 16384 16384 16384 16384 16384
Max Anisotropy 16 16 16 16 16
Numero massimo di primitive 2^32 - 1 2^32 - 1 2^32 - 1 2^32 - 1 2^32 - 1
Max Vertex Index 2^32 - 1 2^32 - 1 2^32 - 1 2^32 - 1 2^32 - 1
Numero massimo di slot di input 32 32 32 32 32
Destinazioni di rendering simultanee 8 8 8 8 8
Funzionalità \ Livello di funzionalità 12_28 12_10 12_00 11_1 1 11_0
Query di occlusione
Fusione alfa separata
Mirror una volta
Elementi vertice sovrapposti
Maschere di scrittura indipendenti
Instancing
Nonpowers-of-2 conditionally3 No No No No No
Nessuna potenza-of-2 in modo condizionale4

Vengono inoltre impostati i flag seguenti:

Funzionalità \ Livello di funzionalità 12_28
WaveOps TRUE
OutputMergerLogicOp TRUE
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportWithoutGSEmulation TRUE
CopyQueueTimestampQueriesSupported TRUE
CastingFullyTypedFormatSupported TRUE
Int64ShaderOps TRUE

Supporto delle funzionalità Direct3D 11 (livelli di funzionalità da 12_1 a 9_1)

Per i livelli di funzionalità elencati sono disponibili le funzionalità seguenti. Le intestazioni nella riga superiore sono livelli di funzionalità Direct3D 11. Le intestazioni nella colonna a sinistra sono caratteristiche. Vedere anche Note a piè di pagina per le tabelle.

Funzionalità \ Livello di funzionalità 12_10 12_00 11_1 1 11_0 10_1 10_0 9_37 9_2 9_1
Modello shader 5.12 5.12 5.02 5.02 4.x 4,0 2.0 (4_0_level_9_3) [vs_2_a/ps_2_x]5 2.0 (4_0_level_9_1) 2.0 (4_0_level_9_1)
Modello di driver WDDM 1.x 1.x 1.x 1.x 1.x 1.x 1.x 1.x 1.x
Risorse affiancate Livello 26 Livello 26 Facoltativo Facoltativo No No No No No
Rasterizzazione conservativa Livello 16 Facoltativo Facoltativo No No No No No No
Visualizzazioni ordine rasterizzatore Facoltativo Facoltativo No No No No No No
Filtri min/max Facoltativo No No No No No No
Buffer predefinito mappa Facoltativo Facoltativo Facoltativo Facoltativo No No No No No
Valore di riferimento dello stencil specificato dello shader Facoltativo Facoltativo Facoltativo No No No No No No
Caricamenti della visualizzazione accesso non ordinato tipizzato 18 formati, più facoltativi 18 formati, più facoltativi 3 formati, più facoltativi 3 formati, più facoltativi No No No No No
Geometry shader No No No
Streaming in uscita No No No
DirectCompute/Compute Shader Facoltativo Facoltativo N/D N/D N/D
Hull e Domain Shader No No No No No
Funzionalità \ Livello di funzionalità 12_10 12_00 11_1 1 11_0 10_1 10_0 9_37 9_2 9_1
Matrici di risorse trama No No No
Matrici di risorse Cubemap No No No No
Compressione BC4/BC5 No No No
Compressione BC6H/BC7 No No No No No
Da alfa a copertura No No No
Formati estesi (BGRA e così via) Facoltativo Facoltativo
Formato High Color 10 bit XR Facoltativo Facoltativo N/D N/D N/D
Operazioni logiche (unione di output) Facoltativo1 Facoltativo1 Facoltativo1 No No No
Rasterizzazione indipendente dalla destinazione No No No No No No
Destinazione di rendering multipla (MRT) con ForcedSampleCount 1 Facoltativo1 Facoltativo1 Facoltativo1 No No No
Slot UAV 64 64 64 8 1 1 N/D N/D N/D
UAV in ogni fase No No No N/D N/D N/D
Funzionalità \ Livello di funzionalità 12_10 12_00 11_1 1 11_0 10_1 10_0 9_37 9_2 9_1
Numero massimo di campioni forzati per il rendering solo UAV 16 16 16 8 N/D N/D N/D N/D N/D
Offset del buffer costante e aggiornamenti parziali Facoltativo1 Facoltativo1 Facoltativo1 1 1 1
Formati a 16 bit per pixel (bpp) Facoltativo1 Facoltativo1 Facoltativo1 Facoltativo1 Facoltativo1 Facoltativo1
Dimensione massima trama 16384 16384 16384 16384 8192 8192 4096 2048 2048
Dimensione Max Cubemap 16384 16384 16384 16384 8192 8192 4096 512 512
Max Volume Extent 2048 2048 2048 2048 2048 2048 256 256 256
Ripetizione massima trama 16384 16384 16384 16384 8192 8192 8192 2048 128
Max Anisotropy 16 16 16 16 16 16 16 16 2
Numero massimo di primitive 2^32 - 1 2^32 - 1 2^32 - 1 2^32 - 1 2^32 - 1 2^32 - 1 1048575 1048575 65535
Max Vertex Index 2^32 - 1 2^32 - 1 2^32 - 1 2^32 - 1 2^32 - 1 2^32 - 1 1048575 1048575 65534
Numero massimo di slot di input 32 32 32 32 32 16 16 16 16
Destinazioni di rendering simultanee 8 8 8 8 8 8 4 1 1
Funzionalità \ Livello di funzionalità 12_28 12_10 11_1 1 11_0 10_1 10_0 9_37 9_2 9_1
Query di occlusione No
Fusione alfa separata No
Mirror una volta No
Elementi vertice sovrapposti No
Maschere di scrittura indipendenti No No
Instancing 7 No No
Nonpowers-of-2 conditionally3 No No No No No No
Nessuna potenza-of-2 in modo condizionale4 No No No

Note a piè di pagina per le tabelle

0 Richiede il runtime Direct3D 11.3 o Direct3D 12.

1 Richiede il runtime direct3D 11.1.

2 Il modello shader 5.0 e versioni successive può facoltativamente supportare shader a precisione doppia, shader a precisione doppia estesa, istruzioni dello shader SAD4 e shader con precisione parziale. Per determinare le opzioni del modello di shader 5.0 disponibili per DirectX 11, chiamare ID3D11Device::CheckFeatureSupport. La compatibilità dipende dall'hardware in esecuzione. Il modello shader 5.1 e versioni successive sono supportati solo tramite l'API DirectX 12, indipendentemente dal livello di funzionalità usato. DirectX 11 supporta solo fino al modello shader 5.0. L'API DirectX 12 scende solo a livello di funzionalità 11_0.

3 A livelli di funzionalità 9_1, 9_2 e 9_3, il dispositivo display supporta l'uso di trame 2D con dimensioni che non sono poteri di due in due condizioni. In primo luogo, è possibile creare un solo livello di mappa MIP per ogni trama e, in secondo luogo, non è consentito eseguire il wrapping delle modalità di campionamento per le trame, ovvero i membri AddressU, AddressV e AddressW di D3D11_SAMPLER_DESC non possono essere impostati su D3D11_TEXTURE_ADDRESS_WRAP.

4 A livelli di funzionalità 10_0, 10_1 e 11_0, il dispositivo di visualizzazione supporta in modo incondizionato l'uso di trame 2D con dimensioni che non sono poteri di due.

5 Vertex Shader 2a con 256 istruzioni, 32 registri temporanei, controllo del flusso statico della profondità 4, controllo del flusso dinamico della profondità 24 e D3DVS20CAPS_PREDICATION. Pixel Shader 2x con 512 istruzioni, 32 registri temporanei, controllo del flusso statico di profondità 4, controllo del flusso dinamico di profondità 24, D3DPS20CAPS_ARBITRARYSWIZZLE, D3DPS20CAPS_GRADIENTINSTRUCTIONS, D3DPS20CAPS_PREDICATION, D3DPS20CAPS_NODEPENDENTREADLIMIT e D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT.

6 Livelli superiori facoltativi.

7 Per il livello di funzionalità 9_3, gli unici metodi di rendering supportati sono Draw,DrawIndexed e DrawIndexInstanced. Anche per il livello di funzionalità 9_3, il rendering dell'elenco dei punti è supportato solo per il rendering tramite Draw.

8 Supportato da Windows 11.

9 Nell'API Direct3D 12 esistono limiti sul numero di descrittori in un heap CBV/SRV/UAV. Per informazioni dettagliate, vedere Livelli hardware . Separatamente, esiste un limite per il numero di UAV in tutte le tabelle descrittori in tutte le fasi, che si basa sul livello di associazione delle risorse.

Un processo a 64 bit richiede 40 bit di spazio indirizzi disponibile per risorsa e per processo. Un processo a 32 bit potrebbe essere limitato a 31 bit di spazio indirizzi. Esistono due funzionalità (limiti) disponibili nell'API, per processo e per risorsa. Lo spazio degli indirizzi per processo è sempre maggiore o uguale allo spazio indirizzi per risorsa.

Per informazioni dettagliate sul supporto del formato a livelli di funzionalità hardware diversi, vedere: