Share via


struttura D3D12_FEATURE_DATA_ARCHITECTURE (d3d12.h)

Fornisce informazioni dettagliate sull'architettura dell'adattatore, in modo che l'applicazione possa ottimizzare meglio per determinate proprietà dell'adattatore.

Nota Questa struttura è stata sostituita dalla struttura D3D12_FEATURE_DATA_ARCHITECTURE1 . Se l'applicazione è destinata a Windows 10, versione 1703 (Creators' Update) o successiva, usare invece D3D12_FEATURE_DATA_ARCHITECTURE1 (e D3D12_FEATURE_ARCHITECTURE1).
 

Sintassi

typedef struct D3D12_FEATURE_DATA_ARCHITECTURE {
  UINT NodeIndex;
  BOOL TileBasedRenderer;
  BOOL UMA;
  BOOL CacheCoherentUMA;
} D3D12_FEATURE_DATA_ARCHITECTURE;

Members

NodeIndex

Nell'operazione con più adattatori, questo indica quale scheda fisica del dispositivo è rilevante. Vedere Sistemi a più schede. NodeIndex viene compilato dall'applicazione prima di chiamare CheckFeatureSupport, perché l'applicazione può recuperare i dettagli sull'architettura di ogni scheda.

TileBasedRenderer

Specifica se l'hardware e il driver supportano un renderer basato su riquadri. Il runtime imposta questo membro su TRUE se l'hardware e il driver supportano un renderer basato su riquadri.

UMA

Specifica se l'hardware e il driver supportano UMA. Il runtime imposta questo membro su TRUE se l'hardware e il driver supportano UMA.

CacheCoherentUMA

Specifica se l'hardware e il driver supportano l'UMA coerente con la cache. Il runtime imposta questo membro su TRUE se l'hardware e il driver supportano l'UMA coerente con la cache.

Commenti

Come usare UMA e CacheCoherentUMA

Le app D3D12 devono essere preoccupate per la gestione della residenza della memoria e per fornire le proprietà dell'heap ottimali. Le app D3D12 possono rimanere semplificate ed eseguite ragionevolmente bene in molte architetture GPU solo gestendo la residenza per le risorse in D3D12_HEAP_TYPE_DEFAULT heap. Queste app devono solo chiamare IDXGIAdapter3::QueryVideoMemoryInfo per DXGI_MEMORY_SEGMENT_GROUP_LOCAL e devono essere tolleranti che D3D12_HEAP_TYPE_UPLOAD e D3D12_HEAP_TYPE_READBACK provengono dallo stesso gruppo di segmenti di memoria.

Tuttavia, una progettazione così semplice è troppo vincolata per le applicazioni che spingono i limiti. Pertanto, D3D12_FEATURE_DATA_ARCHITECTURE consente alle applicazioni di ottimizzare meglio le proprietà dell'adattatore sottostante.

Alcune applicazioni potrebbero voler ottimizzare meglio le schede discrete e affrontare la complessità aggiuntiva della gestione dei budget di memoria di sistema e di memoria video. Se le dimensioni degli heap di caricamento rivalino con le dimensioni delle trame predefinite, è disponibile un quasi raddoppio dell'utilizzo della memoria. Quando si supportano tali ottimizzazioni, un'applicazione può rilevare due budget di residenza o riconoscere che UMA è false.

Alcune applicazioni potrebbero voler ottimizzare meglio le schede integrate/UMA, in particolare quelle interessate a estendere la durata della batteria nel dispositivo mobile. Le applicazioni D3D12 semplici vengono forzate a copiare i dati tra heap con attribuzioni diverse, quando non è sempre necessario in UMA. Tuttavia, la proprietà UMA, da sola, comprende un'area grigia ragionevolmente vaga delle progettazioni GPU. Non presupporre che UMA significa che tutta la memoria accessibile dalla GPU può essere resa accessibile liberamente dalla CPU, perché non lo è. Esiste una proprietà che si allinea più strettamente a quel tipo di pensiero: CacheCoherentUMA.

Quando CacheCoherentUMA è false, è disponibile un singolo budget di residenza, ma la progettazione UMA in genere trae vantaggio dalle tre attribuzioni dell'heap. Esistono opportunità per rimuovere la copia delle risorse tramite l'uso saggio delle risorse di caricamento e di readback e degli heap, che forniscono l'accesso alla CPU alla memoria. Queste opportunità, però, non sono chiare. Quindi, le applicazioni dovrebbero essere caute; e la sperimentazione in un'ampia gamma di sistemi "UMA" è consigliabile, in quanto è consigliabile ricorrere all'abilitazione o alla precludazione di determinati ID dispositivo. È consigliabile comprendere l'architettura della memoria GPU e il modo in cui i tipi di heap si traducono nelle proprietà della cache. La fattibilità del successo dipende probabilmente dalla frequenza con cui ogni responsabile legge o scrive i dati, le dimensioni e la località degli accessi ai dati e così via. Per gli sviluppatori avanzati: quando UMA è true e CacheCoherentUMA è false, la caratteristica più unica per queste schede è che gli heap di caricamento sono ancora combinati in scrittura. Tuttavia, alcune schede UMA traggono vantaggio dalle proprietà no-CPU-access e write-combine degli heap predefiniti e di caricamento. Per altri dettagli, vedere GetCustomHeapProperties .

Quando CacheCoherentUMA è true, le applicazioni possono intrattenere in modo più forte l'abbandono dell'attribuzione di heap e l'uso dell'heap personalizzato equivalente agli heap di caricamento ovunque. Le ottimizzazioni UMA di copia zero sono in genere consigliate perché più scenari trarranno vantaggio solo dall'utilizzo condiviso. Il modello di memoria è molto favorevole a più scenari e a un'adozione più ampia. Alcuni casi d'angolo possono ancora esistere in cui i benefici non sono facilmente ottenuti, ma dovrebbero essere molto più rari e meno dannosi di altre opzioni. Per gli sviluppatori avanzati: CacheCoherentUMA significa che una quantità significativa di cache nella gerarchia di memoria è unificata o integrata anche tra CPU e GPU. La caratteristica osservabile più unica è che gli heap di caricamento sono effettivamente writeback in CacheCoherentUMA. Per queste architetture, l'uso di heap di scrittura su heap di caricamento è in genere un danno.

I dettagli di basso livello devono essere ignorati dalla maggior parte delle applicazioni a scheda singola. Come di consueto, le applicazioni a adattatore singolo possono semplificare il panorama e garantire che le scritture della CPU per caricare gli heap usino modelli compatibili con la combinazione di scrittura. I dettagli di livello inferiore consentono di rafforzare i concetti per le applicazioni con più adattatori. È probabile che le applicazioni con più adattatori debbano comprendere bene le proprietà dell'architettura degli adattatori per scegliere le proprietà dell'heap personalizzate ottimali per spostare in modo efficiente i dati tra schede.

Requisiti

Requisito Valore
Intestazione d3d12.h

Vedi anche

Strutture principali

D3D12_FEATURE