Condividi tramite


Uso dei dati delle funzionalità Direct3D 11 per integrare i livelli di funzionalità Direct3D

Informazioni su come controllare il supporto del dispositivo per le funzionalità facoltative, incluse le funzionalità aggiunte nelle versioni recenti di Windows.

I livelli di funzionalità Direct3D indicano set ben definiti di funzionalità GPU che corrispondono approssimativamente a diverse generazioni di hardware grafico. Questo semplifica notevolmente l'attività di controllo delle capaibilità hardware e offre anche un'esperienza coerente tra una vasta gamma di dispositivi diversi.

Per tenere conto di alcune delle diverse implementazioni hardware, tra cui hardware legacy, hardware mobile e hardware moderno, alcune funzionalità sono considerate facoltative. Il supporto per queste funzionalità può essere determinato chiamando ID3D11Device::CheckFeatureSupport e fornendo la struttura D3D11_FEATURE_DATA_* pertinente. In questo argomento vengono descritte le varie funzionalità direct3D 11 facoltative, come alcuni di essi interagiscono e come evitare di controllare ogni singola funzionalità facoltativa.

Come verificare il supporto facoltativo per le funzionalità

Chiamare ID3D11Device::CheckFeatureSupport, fornendo la struttura che rappresenta la funzionalità facoltativa da usare. Se il metodo restituisce S_OK, significa che si è in una versione del runtime Direct3D che supporta la funzionalità facoltativa. Se restituisce E_INVALIDARG, ciò significa che si è in una versione del runtime Direct3D 11 da prima dell'aggiunta della funzionalità facoltativa. Ciò significa che la funzionalità facoltativa non è disponibile, insieme ad altre funzionalità facoltative introdotte nella stessa versione di Direct3D 11 o successiva.

È possibile ridurre al minimo il lavoro necessario per i controlli di supporto delle funzionalità?

Oltre ad avere il runtime Direct3D 11 corretto (in genere associato a una versione di Windows) il driver grafico deve essere abbastanza recente per supportare la funzionalità facoltativa. Le specifiche WDDM richiedono funzionalità facoltative da supportare se l'hardware può supportarlo. Quindi, quando un driver grafico supporta una delle funzionalità facoltative aggiunte in una determinata versione di Windows, in genere significa che il driver grafico supporta le altre funzionalità aggiunte in quella versione di Windows. Ad esempio, se un driver di dispositivo supporta ombreggiature a livello di funzionalità 9, si sa che il driver di dispositivo è almeno WDDM 1.2.

Nota Se un dispositivo Microsoft Direct3D supporta il livello di funzionalità 11.1, tutte le funzionalità facoltative indicate da D3D11_FEATURE_DATA_D3D11_OPTIONS vengono supportate automaticamente tranne SAD4ShaderInstructions e ExtendedDoublesShaderInstructions.

Il runtime imposta sempre i raggruppamenti seguenti di membri in modo identico. Ovvero, tutti i valori di un raggruppamento sono TRUE o FALSE insieme:

  • RimuoviAPIsSeenByDriver e FlagsForUpdateAndCopySeenByDriver
  • ClearView, CopyWithOverlap, ConstantBufferPartialUpdate, ConstantBufferOffsetting e MapNoOverwriteOnDynamicConstantBuffer
  • MapNoOverwriteOnDynamicBufferSRV e MultisampleRTVWithForcedSampleCountOne

Opzioni a livello di funzionalità 11.2 (D3D11_FEATURE_D3D11_OPTIONS1): Le funzionalità facoltative indicate da questo campo sono indipendenti e devono essere controllate singolarmente.

Supporto delle funzionalità nei dispositivi Windows RT 8.1 e Windows Phone 8.1

Windows RT dispositivi tablet possono supportare un'ampia gamma di livelli di funzionalità e funzionalità facoltative, sono ottimizzati per ridurre il consumo di energia e usare grafica integrata anziché GPU discrete. Le app di Windows Store per i dispositivi ARM devono supportare il livello di funzionalità 9.1. Le app DirectX per Windows RT devono sfruttare le funzionalità facoltative che possono risparmiare energia e cicli, ad esempio semplici instancing, quando sono disponibili.

Windows Phone 8 dispositivi mobili supportano il livello di funzionalità 9.3 con funzionalità facoltative specifiche. Per Windows Phone 8, vedere Livello di funzionalità Direct3D 9_3.

Quali sono le funzionalità facoltative direct3D 11?

Il resto di questo articolo descrive le funzionalità facoltative disponibili in Direct3D 11.2. Le funzionalità vengono descritte in ordine cronologico quando sono state aggiunte in modo da poter ottenere un'idea delle funzionalità in versioni diverse di Direct3D 11.

Supporto facoltativo dello shader di calcolo per il livello di funzionalità 10

La funzionalità seguente è sempre disponibile per i dispositivi a livello di funzionalità 10:

D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS: se è TRUE, il dispositivo supporta gli shader di calcolo. Ciò include il supporto per i buffer non elaborati e strutturati.

Quando il livello di funzionalità 10_0 o 10_1 dispositivo supporta questa funzionalità, il dispositivo non è garantito per supportare lo shader di calcolo 4.1. Le app devono essere preparate per eseguire il fallback in un'istanza di calcolo shader 4.0 se ID3D11Device::CreateComputeShader genera un'eccezione con un programma di calcolo shader 4.1.

Funzionalità facoltative per il livello di funzionalità 9

Le funzionalità seguenti vengono aggiunte per il livello di funzionalità 9 a partire da Windows 8:

D3D11_FEATURE_DATA_D3D9_OPTIONS: Indica il supporto per l'indirizzamento della trama a capo con trame non power-of-2. Se questa operazione è supportata, è possibile usare D3D11_TEXTURE_ADDRESS_MODE_WRAP con tali trame.

D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT: Indica il supporto per gli esempi di confronto nel modello shader 4.0 9_x shader. Questa operazione viene usata per i test di profondità nei pixel shader, consentendo il supporto per tecniche comuni, ad esempio mapping ombreggiatura e stencil.

La funzionalità seguente è stata aggiunta per i dispositivi a livello di funzionalità 9 a partire da Windows 8.1:

D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT: Indica il supporto per le semplici funzionalità di instancing che potrebbero essere disponibili nell'hardware DirectX a 9 livelli. L'instancing semplice significa che tutti i membri InstanceDataStepRate delle strutture D3D11_INPUT_ELEMENT_DESC usate per definire il layout di input devono essere uguali a 1. I dispositivi che supportano il livello di funzionalità 9.3 o versioni successive includono già il supporto completo per l'instancing.

Supporto di precisione a virgola mobile facoltativo per i programmi shader

D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT: I campi in questo struct indicano la lunghezza dei numeri a virgola mobile quando la precisione minima è abilitata o 0 se è supportata solo la precisione a virgola mobile completa a 32 bit.

Per i dispositivi a livello di funzionalità 9, la precisione minima per il vertex shader può essere diversa dal pixel shader. La precisione per il vertex shader è indicata nel campo AllOtherShaderStagesMinPrecision .

D3D11_FEATURE_DATA_DOUBLES: I dispositivi a livello di funzionalità 11 possono supportare calcoli di precisione doppia all'interno dei programmi del modello shader 5.0. Il supporto per calcoli di precisione doppia all'interno del shader significa che i float possono essere convertiti in doppie all'interno del programma di calcolo shader, fornendo il vantaggio di un calcolo di precisione superiore all'interno di ogni passaggio di shader. I numeri di precisione doppia devono essere convertiti in float prima di essere scritti nel buffer di output. Si noti che la divisione a precisione doppia non è necessariamente supportata.

Funzionalità aggiuntive per Direct3D 11.2

Direct3D 11.2 aggiunge quattro nuove funzionalità facoltative che possono essere supportate dai dispositivi Direct3D 11. Queste funzionalità si trovano nella struttura D3D11_FEATURE_DATA_D3D11_OPTIONS1 :

TiledResourcesTier: Indica il supporto per le risorse riquadri e indica il livello supportato.

MinMaxFiltering: Indica il supporto per D3D11_FILTER_MINIMUM_* e D3D11_FILTER_MAXIMUM_* opzioni di filtro, che confrontano il risultato del filtro al valore minimo (o massimo). Vedere D3D11_FILTER.

ClearViewAlsoSupportsDepthOnlyFormats: Indica il supporto per cancellare le viste delle risorse del buffer di profondità.

MapOnDefaultBuffers: Indica il supporto per il rendering dei buffer di destinazione di mapping creati con il flag D3D11_USAGE_DEFAULT .

Rendering basato su riquadri

D3D11_FEATURE_DATA_ARCHITECTURE_INFO: Indica se il dispositivo grafico esegue il rendering dei comandi e esegue il rendering basato su riquadri per impostazione predefinita. Questa opzione può essere usata come hint per l'ottimizzazione del motore grafico.

Funzionalità facoltative per lo sviluppo e il debug

D3D11_FEATURE_DATA_D3D11_OPTIONS::D iscardAPIsSeenByDriver: È possibile monitorare questo membro durante lo sviluppo per escludere i driver legacy nell'hardware in cui DiscardView e DiscardResource potrebbero essere stati altrimenti utili.

D3D11_FEATURE_DATA_MARKER_SUPPORT: Questo è supportato se l'hardware e il driver supportano il contrassegno dei dati per la profilatura GPU.

Dispositivi