Condividi tramite


enumerazione D3D10DDI_QUERY (d3d10umddi.h)

Il tipo di enumerazione D3D10DDI_QUERY contiene valori che identificano un tipo di query.

Sintassi

typedef enum D3D10DDI_QUERY {
  D3D10DDI_QUERY_EVENT,
  D3D10DDI_QUERY_OCCLUSION,
  D3D10DDI_QUERY_TIMESTAMP,
  D3D10DDI_QUERY_TIMESTAMPDISJOINT,
  D3D10DDI_QUERY_PIPELINESTATS,
  D3D10DDI_QUERY_OCCLUSIONPREDICATE,
  D3D10DDI_QUERY_STREAMOUTPUTSTATS,
  D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE,
  D3D11DDI_QUERY_PIPELINESTATS,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM0,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM1,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM2,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM3,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM0,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM1,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM2,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM3,
  D3D10DDI_COUNTER_GPU_IDLE,
  D3D10DDI_COUNTER_VERTEX_PROCESSING,
  D3D10DDI_COUNTER_GEOMETRY_PROCESSING,
  D3D10DDI_COUNTER_PIXEL_PROCESSING,
  D3D10DDI_COUNTER_OTHER_GPU_PROCESSING,
  D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION,
  D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION,
  D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION,
  D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION,
  D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION,
  D3D10DDI_COUNTER_VERTEXSHADER_MEMORY_LIMITED,
  D3D10DDI_COUNTER_VERTEXSHADER_COMPUTATION_LIMITED,
  D3D10DDI_COUNTER_GEOMETRYSHADER_MEMORY_LIMITED,
  D3D10DDI_COUNTER_GEOMETRYSHADER_COMPUTATION_LIMITED,
  D3D10DDI_COUNTER_PIXELSHADER_MEMORY_LIMITED,
  D3D10DDI_COUNTER_PIXELSHADER_COMPUTATION_LIMITED,
  D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE,
  D3D10DDI_COUNTER_TEXTURE_CACHE_HIT_RATE,
  D3D10DDI_COUNTER_DEVICE_DEPENDENT_0
} ;

Costanti

 
D3D10DDI_QUERY_EVENT
Questo tipo di query fornisce una primitiva di sincronizzazione che molti dei tipi di query seguenti simulano per gestire la natura asincrona dell'unità di elaborazione grafica (GPU). Un D3D10DDI_QUERY_EVENT emesso viene segnalato dopo che la GPU è stata completata con tutti i comandi rilasciati in precedenza, in genere dal back-end della pipeline grafica. I dati associati al driver a questo tipo di query sono un valore BOOL. Tuttavia, il valore BOOL è ridondante perché ogni volta che viene segnalata una query di D3D10DDI_QUERY_EVENT, il valore di BOOL è sempre TRUE. Il driver deve sempre restituire il valore dei dati BOOL di TRUE quando si segnala il D3D10DDI_QUERY_EVENT.
D3D10DDI_QUERY_OCCLUSION
I dati statistici associati al driver a questo tipo di query sono UINT64. Questi dati statistici contengono il numero di multicampionamento che hanno superato i test di profondità e stencil, noti anche come multicampionamento "visibile", per tutte le primitive dopo la creazione del contesto di dispositivo. Se la destinazione di rendering non è multicampionata, il contatore viene incrementato del numero di pixel interi visibili. Il contatore deve essere disposto intorno quando viene eseguito l'overflow.

NOTA

Il runtime Direct3D può chiamare la funzione QueryGetData del driver in qualsiasi momento per richiedere questi dati statistici. Pertanto, deve essere calcolato in modo accurato in modo continuo.

Solo la differenza tra due richieste statistiche indipendenti fornirà informazioni significative. Il driver deve calcolare la differenza tra i dati statistici ricevuti quando si verifica una chiamata alla relativa funzione queryBegine i dati statistici ricevuti quando si verifica una chiamata alla relativa funzione QueryEnd.

Ai fini del calcolo dei multicampionamento visibili, i test di profondità o gli stencil disabilitati devono comportarsi come se i multicampionamento "superino" il test disabilitato. Ciò produce risultati equivalenti a quando le unità di test sono state abilitate con la funzione di test impostata su "always". Inoltre, questi valori devono essere tabulati come di consueto anche se non sono associate destinazioni di rendering. Poiché i test di profondità e stencil si verificano logicamente nella fase di unione dell'output della pipeline, i pixel eliminati durante l'esecuzione del pixel shader non incrementano il contatore dell'occlusione. I pixel rimossi in modo logico non raggiungono nemmeno la fusione di output. Esistono configurazioni della pipeline in cui gli unici risultati effettivi prodotti dalla pipeline sono la tabulazione del contatore dell'occlusione.

D3D10DDI_QUERY_TIMESTAMP
I dati associati al driver a questo tipo di query sono UINT64. Il tipo di query TIMESTAMP viene usato in modo analogo al tipo di query D3D10DDI_QUERY_EVENT perché il tipo di query TIMESTAMP fornisce anche un tipo di primitiva di sincronizzazione. Come D3D10DDI_QUERY_EVENT, TIMESTAMP dovrebbe essere segnalato al termine della GPU con tutti i comandi rilasciati in precedenza. Tuttavia, TIMESTAMP differisce da D3D10DDI_QUERY_EVENT restituendo un valore timestamp a 64 bit. Questo valore timestamp a 64 bit deve essere campionato da un contatore GPU, che incrementa a una frequenza coerente. Il valore timestamp deve essere campionato nel momento in cui la GPU è terminata con tutti i comandi rilasciati in precedenza. La GPU non è necessaria per assicurarsi che tutte le cache vengano scaricate in memoria per determinare che il lavoro è stato completato. In questo modo, la soddisfazione di più tipi di query TIMESTAMP ad alta frequenza non disturba notevolmente la pipeline. Tuttavia, la CPU deve monitorare l'ordinamento di scrittura della memoria ben definito tra se stesso e la GPU, soprattutto quando D3D10DDI_QUERY_EVENT è supportato. Se la CPU dovesse determinare che la GPU ha scritto un determinato valore (in particolare un valore limite), la CPU determinerebbe che tutte le scritture di memoria precedenti rilasciate prima della scrittura del recinto devono essere scaricate in memoria e in grado di essere visualizzate immediatamente dalla CPU. Il tipo di scaricamento che potrebbe essere necessario per ottenere i dati dalle cache GPU e nella memoria accessibile dalla CPU non deve essere eseguito ogni TIMESTAMP, ma probabilmente più alla fine di ogni buffer dei comandi.

La frequenza del contatore timestamp viene fornita nel contesto di un tipo di query D3D10DDI_QUERY_TIMESTAMPDISJOINT. La frequenza di questo contatore deve essere maggiore di 10 MHz e resistente alla limitazione dinamica ad alta frequenza della GPU. Il contatore timestamp deve essere globale. Pertanto, il contatore timestamp non è necessario per tenere conto dello slicing tempo GPU dei contesti.

Il valore iniziale del contatore timestamp non è specificato. Pertanto, il valore assoluto del contatore timestamp è in genere privo di significato da solo. Tuttavia, il valore relativo generato dalla differenza di due valori assoluti quantifica un periodo di tempo trascorso. La differenza di due valori di timestamp è precisa solo quando le due query TIMESTAMP sono racchiuse tra parentesi all'interno di un intervallo di D3D10DDI_QUERY_TIMESTAMPDISJOINT e quando il valore di query non contiguo della query D3D10DDI_QUERY_TIMESTAMPDISJOINT restituisce FALSE.
D3D10DDI_QUERY_TIMESTAMPDISJOINT
I dati associati al driver a questo tipo di query sono una struttura D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT. TIMESTAMPDISJOINT consente a un'applicazione di definire una parentesi quadre non solo per richiedere la frequenza dell'orologio TIMESTAMP, ma anche per rilevare se tale frequenza è coerente nell'intero intervallo di comandi grafici tra parentesi quadre. Il membro di non contiguo di D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT contiene un valore BOOL che indica quando un elemento ha causato la discontinuità o la disgiunzione del contatore timestamp. Alcuni esempi di eventi che dovrebbero attivare TIMESTAMPDISJOINT sono un risparmio di energia, una limitazione delle richieste verso l'alto e il basso a causa di eventi di risparmio di energia del portatile, un cavo AC scollegato e il surriscaldamento. Tali occorrenze di eventi devono essere abbastanza rare durante uno stato di esecuzione costante dell'applicazione grafica da evitare controllando l'ambiente di esecuzione del sistema. Si noti che, se si verificano tali eventi, riducono in modo efficace l'utilità della funzionalità TIMESTAMP. Le query TIMESTAMP dopo un evento che attiverebbe una query TIMESTAMPDISJOINT non dovrebbero essere significative rispetto alle query TIMESTAMP precedenti a tale evento. Il valore BOOL nel membro disgiunto è TRUE se i valori delle query TIMESTAMP non possono essere garantiti per tutta la durata della query TIMESTAMPDISJOINT. In caso contrario, non contiguo deve essere FALSE. Il valore del Frequency membro di D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT deve essere uguale alla frequenza dell'orologio TIMESTAMP.

Inoltre, le notifiche di tali eventi di limitazione sono utili per gli strumenti di monitoraggio delle prestazioni, regressione e analisi, presupponendo che le notifiche comportino differenze di prestazioni nell'esecuzione dell'applicazione.
D3D10DDI_QUERY_PIPELINESTATS
Per informazioni dettagliate, vedere La sezione Osservazioni.
D3D10DDI_QUERY_OCCLUSIONPREDICATE
I dati associati al driver a questo tipo di query sono un valore BOOL. Questo predicato rispecchia la specifica per la query OCCLUSION. Se la query OCCLUSION per lo stesso intervallo tra parentesi quadre restituisce 0, il predicato OCCLUSION restituisce FALSE. In caso contrario, il predicato OCCLUSION restituisce TRUE, che indica che almeno un multisample è visibile. Se il predicato è stato indicato come hint o garantito, nessun risultato viene mai propagato all'applicazione. Questo tipo di query è un predicato e può essere usato per predicare i comandi di rendering.
D3D10DDI_QUERY_STREAMOUTPUTSTATS
I dati associati al driver a questo tipo di query sono una struttura D3D10_DDI_QUERY_DATA_SO_STATISTICS. Questa struttura contiene statistiche per il monitoraggio della quantità di dati trasmessi nella fase di output del flusso della pipeline. Questi conteggi delle statistiche sono solo primitive complete (ad esempio, punti, linee e triangoli) trasmessi. Se il tipo primitivo cambia (ad esempio, linee in triangoli), il conteggio non viene modificato in alcun modo. Ovvero, il conteggio è sempre primitive totali, indipendentemente dal tipo.

NOTA

Il runtime Direct3D può chiamare la funzione QueryGetData del driver in qualsiasi momento per richiedere queste statistiche. Pertanto, deve essere calcolato in modo accurato in modo continuo.

Solo la differenza tra due richieste statistiche indipendenti fornirà informazioni significative. Il driver deve calcolare la differenza tra i dati statistici ricevuti quando si verifica una chiamata alla relativa funzione queryBegine i dati statistici ricevuti quando si verifica una chiamata alla relativa funzione QueryEnd.

D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE
I dati associati al driver a questo tipo di query sono un valore BOOL. Questo valore BOOL è TRUE se un output di flusso supera il flusso. Se due query D3D10DDI_QUERY_STREAMOUTPUTSTATS venivano usate per monitorare contemporaneamente lo stesso intervallo tra parentesi quadre di un tipo di predicato STREAMOVERFLOWPREDICATE, la differenza nei valori nei PrimitivesStorageNeeded membri di D3D10_DDI_QUERY_DATA_SO_STATISTICS avrebbe generato una differenza maggiore rispetto alla differenza nei valori nei membri NumPrimitivesWritten. STREAMOVERFLOWPREDICATE non supporta la possibilità di essere usata come hint. Pertanto, il tipo di predicato deve essere garantito. Questa query è un predicato e può essere usata per predicare i comandi di rendering, impedendo la visualizzazione di un frame indesiderato all'applicazione.

In caso di streaming in più buffer contemporaneamente, non appena uno di essi esegue l'overflow, l'output del flusso scrive stop per tutti i buffer e i dati per STREAMOVERFLOWPREDICATE diventano TRUE.
D3D11DDI_QUERY_PIPELINESTATS
Supportato in Windows 7 e versioni successive.

I dati associati al driver a questo tipo di query sono una struttura D3D11_DDI_QUERY_DATA_PIPELINE_STATISTICS. Questa struttura contiene statistiche per ogni fase della pipeline grafica. Questo tipo di query è uguale al tipo di query D3D11DDI_QUERY_PIPELINESTATS, ad eccezione di D3D11_DDI_QUERY_DATA_PIPELINE_STATISTICS aggiunge HSInvocations e DSInvocations membri per hull e domain shader.
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM0
Supportato in Windows 7 e versioni successive.

I dati associati al driver a questo tipo di query sono una struttura D3D10_DDI_QUERY_DATA_SO_STATISTICS.
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM1
Supportato in Windows 7 e versioni successive.

I dati associati al driver a questo tipo di query sono una struttura D3D10_DDI_QUERY_DATA_SO_STATISTICS.
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM2
Supportato in Windows 7 e versioni successive.

I dati associati al driver a questo tipo di query sono una struttura D3D10_DDI_QUERY_DATA_SO_STATISTICS.
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM3
Supportato in Windows 7 e versioni successive.

I dati associati al driver a questo tipo di query sono una struttura D3D10_DDI_QUERY_DATA_SO_STATISTICS.
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM0
Supportato in Windows 7 e versioni successive.

I dati associati al driver a questo tipo di query sono un valore BOOL. Questo valore BOOL è TRUE se l'output del flusso 0 è overflow. Se due query D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM0 venivano usate per monitorare contemporaneamente lo stesso intervallo tra parentesi quadre di un tipo predicato STREAMOVERFLOWPREDICATE_STREAM0, la differenza nei valori nei PrimitivesStorageNeeded membri di D3D10_DDI_QUERY_DATA_SO_STATISTICS avrebbe comportato una differenza maggiore rispetto alla differenza dei valori nei membri NumPrimitivesWritten.
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM1
Supportato in Windows 7 e versioni successive.

I dati associati al driver a questo tipo di query sono un valore BOOL. Questo valore BOOL è TRUE se l'output del flusso 1 è overflow. Se due query D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 venivano usate per monitorare contemporaneamente lo stesso intervallo tra parentesi quadre di un tipo di predicato STREAMOVERFLOWPREDICATE_STREAM1, la differenza nei valori nei PrimitivesStorageNeeded membri di D3D10_DDI_QUERY_DATA_SO_STATISTICS avrebbe comportato una differenza maggiore rispetto alla differenza tra i valori nei membri NumPrimitivesWritten.
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM2
Supportato in Windows 7 e versioni successive.

I dati associati al driver a questo tipo di query sono un valore BOOL. Questo valore BOOL è TRUE se l'output del flusso 2 è overflow. Se due query D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 venivano usate per monitorare contemporaneamente lo stesso intervallo tra parentesi quadre di un tipo predicato STREAMOVERFLOWPREDICATE_STREAM2, la differenza nei valori nei PrimitivesStorageNeeded membri di D3D10_DDI_QUERY_DATA_SO_STATISTICS avrebbe comportato una differenza maggiore rispetto alla differenza nei valori nei membri NumPrimitivesWritten.
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM3
Supportato in Windows 7 e versioni successive.

I dati associati al driver a questo tipo di query sono un valore BOOL. Questo valore BOOL è TRUE se l'output del flusso 3 è overflow. Se due query D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 venivano usate per monitorare contemporaneamente lo stesso intervallo tra parentesi quadre di un tipo di predicato STREAMOVERFLOWPREDICATE_STREAM3, la differenza nei valori nei PrimitivesStorageNeeded membri di D3D10_DDI_QUERY_DATA_SO_STATISTICS avrebbe comportato una differenza maggiore rispetto alla differenza dei valori nei membri NumPrimitivesWritten.
D3D10DDI_COUNTER_GPU_IDLE
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di tempo di inattività della GPU.
D3D10DDI_COUNTER_VERTEX_PROCESSING
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di tempo in cui il vertex shader è occupato nell'elaborazione dei dati.
D3D10DDI_COUNTER_GEOMETRY_PROCESSING
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di tempo in cui lo shader geometry sta elaborando i dati.
D3D10DDI_COUNTER_PIXEL_PROCESSING
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di tempo in cui il pixel shader sta elaborando i dati.
D3D10DDI_COUNTER_OTHER_GPU_PROCESSING
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di tempo in cui le operazioni GPU, diverse dalle operazioni vertex, geometry e pixel shader, sono dati di elaborazione occupati.
D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di utilizzo teorico massimo della larghezza di banda della scheda.
D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di un massimo teorico di utilizzo della larghezza di banda della memoria video.
D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di un massimo teorico di utilizzo della velocità effettiva dei vertici.
D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di un massimo teorico di utilizzo della velocità effettiva di configurazione del triangolo.
D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di un massimo teorico di utilizzo della velocità effettiva della frequenza di riempimento.
D3D10DDI_COUNTER_VERTEXSHADER_MEMORY_LIMITED
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di tempo in cui il vertex shader attende che la memoria esegua letture o scritture di dati (rispetto alla percentuale di tempo calcolata dal vertex shader).
D3D10DDI_COUNTER_VERTEXSHADER_COMPUTATION_LIMITED
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di tempo in cui il vertex shader calcola la matematica (rispetto alla percentuale di tempo in cui il vertex shader attende che la memoria esegua letture o scritture di dati).
D3D10DDI_COUNTER_GEOMETRYSHADER_MEMORY_LIMITED
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di tempo in cui il geometry shader attende che la memoria esegua letture o scritture di dati (rispetto alla percentuale di tempo calcolata dal geometry shader).
D3D10DDI_COUNTER_GEOMETRYSHADER_COMPUTATION_LIMITED
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di tempo in cui il geometry shader calcola la matematica (rispetto alla percentuale di tempo in cui il geometry shader attende che la memoria esegua letture o scritture di dati).
D3D10DDI_COUNTER_PIXELSHADER_MEMORY_LIMITED
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di tempo in cui il pixel shader attende che la memoria esegua letture o scritture di dati (rispetto alla percentuale di tempo calcolata dal pixel shader).
D3D10DDI_COUNTER_PIXELSHADER_COMPUTATION_LIMITED
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di tempo in cui il pixel shader calcola la matematica (rispetto alla percentuale di tempo in cui il pixel shader attende che la memoria esegua letture o scritture di dati).
D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di vertici recuperati dal geometry shader o dal pixel shader da una cache di vertici già trasformati dal vertex shader.

Una cache di vertici trasformati(ovvero vertici su cui è stato eseguito il vertex shader) esiste immediatamente dopo il vertex shader. Questi vertici possono essere usati dal geometry shader o dal pixel shader. Una frequenza di riscontri di 100% (risultato di una query D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE) indica che ogni vertice necessario per il geometry shader o il pixel shader è già stato trasformato. Mentre una frequenza di riscontri di 0% indica che ogni vertice richiede l'elaborazione da parte del vertex shader prima che possa essere usata.

Il driver può ristrutturare algoritmi e dati per aumentare la frequenza di riscontri nella cache.
D3D10DDI_COUNTER_TEXTURE_CACHE_HIT_RATE
I dati associati al driver a questo tipo di contatore di query sono un FLOAT32. Il driver restituisce la percentuale di texel o memoria trama recuperata da uno shader da una cache di texel già recuperati dalla memoria video.

Una cache di memoria delle trame può esistere tra la visualizzazione delle risorse shader o eventualmente il buffer costante e gli shader. Una frequenza di riscontri di 100% indica che ogni texel necessario per uno shader era già disponibile nella cache. Mentre una frequenza di riscontri di 0% indica che ogni texel ha richiesto il recupero dei dati dalla memoria video.

Il driver può ristrutturare algoritmi e dati per aumentare la frequenza di riscontri nella cache.
D3D10DDI_COUNTER_DEVICE_DEPENDENT_0
Primo contatore di query dipendente dal dispositivo disponibile. I fornitori di hardware possono usare questo valore e qualsiasi valore a 32 bit sopra 0x40000000 per un contatore di query per i propri dispositivi.

Osservazioni

I valori per D3D10DDI_COUNTER_VERTEX_PROCESSING, D3D10DDI_COUNTER_GEOMETRY_PROCESSING, D3D10DDI_COUNTER_PIXEL_PROCESSING e D3D10DDI_COUNTER_OTHER_GPU_PROCESSING possono aggiungere fino a un valore definito dal driver, ovvero il numero di unità parallele rilevabili. Questo numero viene pubblicato dal driver come parte delle funzionalità della scheda grafica. Il numero di unità parallele rilevabili può essere 1, 2, 3 o 4 a seconda dei dettagli dell'architettura hardware, la capacità dei contatori delle prestazioni di distinguere dove viene effettivamente speso il tempo o a discrezione completa del fornitore dell'hardware. Per le architetture che segnalano il numero di unità parallele rilevabili uguali a 1 (== 1) nella NumDetectableParallelUnits membro della struttura D3D10DDI_COUNTER_INFO in risposta a una chiamata alla funzione CheckCounterInfo, si applica l'equazione seguente:

(D3D10DDI_COUNTER_VERTEX_PROCESSING + D3D10DDI_COUNTER_GEOMETRY_PROCESSING + D3D10DDI_COUNTER_PIXEL_PROCESSING + D3D10DDI_COUNTER_OTHER_GPU_PROCESSING) / NumDetectableParallelUnits = 1,0 - D3D10DDI_COUNTER_GPU_IDLE

Il monitoraggio di tutti questi identificatori di contatore (insieme a D3D10DDI_COUNTER_GPU_IDLE) deve comunque rispettare le regole dei contatori attivi simultaneamente.

Per le architetture che segnalano il numero di unità parallele rilevabili non uguali a 1 (!= 1), l'interazione tra ogni metrica occupata è più complessa. Ad esempio, con il numero di unità parallele rilevabili pari a 4 (== 4), D3D10DDI_COUNTER_VERTEX_PROCESSING e D3D10DDI_COUNTER_PIXEL_PROCESSING sono uguali a .25 (== .25), mentre il resto delle metriche occupate è uguale a 0 (== 0). D3D10DDI_COUNTER_GPU_IDLE potrebbe comportare tra .5 e 75 a seconda della quantità effettiva di sovrapposizione ottenuta da queste unità parallele.

D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION, D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION, D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION, D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION e D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION tutti segnalano una percentuale di collo di bottiglia che è possibile usare. Le applicazioni possono quindi determinare quando viene sottolineato un determinato valore massimo teorico in modo che possano determinare come aggirare il collo di bottiglia.

Dettagli per D3D10DDI_QUERY_PIPELINESTATS valore

I dati associati al driver a questo tipo di query sono una struttura D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS, che contiene statistiche per ogni fase della pipeline grafica. Per ogni fase, il valore per il numero di chiamate deve essere compreso tra cache infinita e nessuna cache. Il clipper apparirà come il geometry shader (GS). Il clipper verrà eseguito per ogni triangolo. Per ogni chiamata, verranno generate zero primitive se il triangolo originale è completamente ritagliato, verrà generata una primitiva se il triangolo originale non viene ritagliato affatto (o il ritaglio restituisce un solo triangolo), verranno generate due primitive se il triangolo originale è stato ritagliato e ha generato due triangoli e così via. Nelle configurazioni tipiche della pipeline, il valore nella GSPrimitives membro di D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS sarebbe uguale al valore nel membro CInvocations. Se la rasterizzazione è disabilitata e la pipeline è configurata per inviare solo primitive all'output del flusso, il valore in GSPrimitives devia dal valore in CInvocations perché CInvocations non viene incrementato. Le statistiche di ritaglio saranno flessibili per quanto riguarda le implementazioni della banda di protezione. Pertanto, quando si esegue il rendering di triangoli che si estendono oltre il riquadro di visualizzazione, i test garantiranno che il ritaglio sia compreso tra un intervallo di valori (numeri che presuppongono una banda di protezione infinita e numeri che presuppongono un rettangolo di ritaglio stretto intorno al riquadro di visualizzazione). Tutti i valori contengono il numero di eventi dalla creazione del contesto di dispositivo. Si noti che queste statistiche possono essere richieste in qualsiasi momento, pertanto devono essere calcolate continuamente in modo accurato.

Solo la differenza tra due richieste statistiche indipendenti fornirà informazioni significative. Il driver deve calcolare la differenza tra i dati statistici ricevuti quando si verifica una chiamata alla relativa funzione queryBegine i dati statistici ricevuti quando si verifica una chiamata alla relativa funzione QueryEnd.

Di seguito sono riportati esempi di interazione tra i valori nei IAVertices, IAPrimitivese VSInvocations membri di D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS rispetto alla memorizzazione nella cache post vertex shader (VS).

Scenario Valore valido IAVertices Valore valido IAPrimitives Valore valido di VSInvocations
Disegnare una striscia di triangoli indicizzati di 4 primitive (con tutti gli indici lo stesso valore) 6 4 1--12
Disegnare un elenco di triangoli indicizzati di 4 primitive (con tutti gli indici lo stesso valore) 12 4 1--12
Disegnare una striscia di triangoli di 4 primitive 6 4 6--12
Disegnare un elenco di triangoli di 4 primitive 12 4 6--12

Le primitive parziali saranno autorizzate a rientrare nell'intervallo di valori, in modo analogo al comportamento della memorizzazione nella cache dei vertici. Pertanto, quando sono possibili primitive parziali, le statistiche devono rientrare tra una pipeline che le ritaglia il prima possibile (prima del conteggio dell'assembler di input ( IA) o il più tardi possibile (post clipper e pre-pixel shader (PS)). L'output del flusso e un NULL GS sono flessibili per determinare se effettivamente si verificano chiamate GS.

Per quanto riguarda il valore nelle PSInvocations membro di D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS, le ottimizzazioni iniziali di profondità e stencil potrebbero o non impedire che il lavoro del pixel shader venga realizzato. Pertanto, quando i pixel non superano un test di profondità, il valore in PSInvocations potrebbe o meno essere incrementato a seconda della posizione in cui si verifica effettivamente il test di profondità nella pipeline. Se il pixel shader restituisce profondità, il valore in PSInvocations deve incrementare come previsto, anche se la profondità di output ha esito negativo. Nell'esempio seguente viene illustrato come verrà testato il valore in PSInvocations.

Si consideri il DSP (numero di pixel che superano i test di profondità e stencil) e DSF (numero di pixel che non superano il test di profondità o stencil) . DSP equivale approssimativamente alla query OCCLUSION, ad eccezione del fatto che OCCLUSION misura più campioni (non pixel). In tutti i casi, DSP <= il valore in PSInvocations<= ( DSP + DSF ). Quando il pixel shader restituisce profondità, il valore in PSInvocations corrisponde alla somma di DSP e DSF. Inoltre, quando un NULL pixel shader è associato alla pipeline, il valore in PSInvocations non aumenta.

Per quanto riguarda i valori in IAVertices e VSInvocations, l'elaborazione dei vertici adiacenti potrebbe essere ottimizzata se gs non dichiara i vertici di adiacenza come input al GS. Pertanto, quando gs non dichiara vertici adiacenti come input, i valori in IAVertices e VSInvocations potrebbero o non riflettere il lavoro implicito nei vertici adiacenti. Se gs dichiara vertici adiacenti, il valore in IAVertices deve includere i vertici adiacenti (senza alcun riferimento alla memorizzazione nella cache post-VS) e il valore in VSInvocations deve includere i vertici adiacenti (insieme a qualsiasi effetto della memorizzazione nella cache post-VS).

Fabbisogno

Requisito Valore
client minimo supportato Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.
intestazione d3d10umddi.h (include D3d10umddi.h)

Vedere anche

CheckCounterInfo

D3D10DDIARG_CREATEQUERY

D3D10DDI_COUNTER_INFO

D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS

D3D10_DDI_QUERY_DATA_SO_STATISTICS

D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT