enumeración D3D10DDI_QUERY (d3d10umddi.h)

El tipo de enumeración D3D10DDI_QUERY contiene valores que identifican un tipo de consulta.

Syntax

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
} ;

Constantes

 
D3D10DDI_QUERY_EVENT
Este tipo de consulta proporciona un primitivo de sincronización que muchos de los siguientes tipos de consulta imitan para tratar con la naturaleza asincrónica de la unidad de procesamiento gráfico (GPU). Una D3D10DDI_QUERY_EVENT emitida se señala una vez finalizada la GPU con todos los comandos emitidos anteriormente, generalmente desde el back-end de la canalización de gráficos. Los datos que el controlador asocia a este tipo de consulta es un BOOL. Sin embargo, el valor bool es redundante porque cada vez que se señala una consulta de D3D10DDI_QUERY_EVENT, el valor de bool siempre es TRUE. El controlador siempre debe devolver el valor de datos BOOL de TRUE al indicar el D3D10DDI_QUERY_EVENT.
D3D10DDI_QUERY_OCCLUSION
Los datos estadísticos que el controlador asocia a este tipo de consulta son UINT64. Estos datos estadísticos contienen el número de muestreos múltiples que pasaron pruebas de profundidad y galería de símbolos, también conocidas como multimuestreos "visibles", para todos los primitivos desde la creación del contexto del dispositivo. Si el destino de representación no es multimuestreo, el contador se incrementa por el número de píxeles enteros que están visibles. El contador debe encapsularse cuando se desborda.

NOTA

El tiempo de ejecución de Direct3D puede llamar a la función QueryGetData del controlador en cualquier momento para solicitar estos datos estadísticos. Por lo tanto, debe calcularse continuamente con precisión.

Solo la diferencia entre dos solicitudes estadísticas independientes proporcionará información significativa. El controlador debe calcular la diferencia entre los datos estadísticos que recibe cuando se produce una llamada a su función QueryBegin y los datos estadísticos que recibe cuando se produce una llamada a su función QueryEnd .

Para calcular los muestreos múltiples visibles, las pruebas de profundidad deshabilitadas o las pruebas de galería de símbolos deben comportarse como si los muestreos múltiples "superen" la prueba deshabilitada. Esto genera resultados equivalentes a cuando las unidades de prueba se habilitaron con la función de prueba establecida en "always". Además, estos valores deben tabularse como normales, incluso si no hay ningún destino de representación enlazado. Dado que las pruebas de profundidad y galería de símbolos se producen lógicamente en la fase de fusión de salida de la canalización, los píxeles que se descartan durante la ejecución del sombreador de píxeles no incrementan el contador de oclusión. Los píxeles descartados lógicamente no llegan a la fusión de salida. Hay configuraciones de canalización en las que los únicos resultados efectivos que se generan a partir de la canalización son la tabulación del contador de oclusión.

D3D10DDI_QUERY_TIMESTAMP
Los datos que el controlador asocia a este tipo de consulta son UINT64. El tipo de consulta TIMESTAMP se usa de forma similar al tipo de consulta D3D10DDI_QUERY_EVENT porque el tipo de consulta TIMESTAMP también proporciona un tipo de primitivo de sincronización. Al igual que D3D10DDI_QUERY_EVENT, TIMESTAMP debe indicarse cuando la GPU haya terminado con todos los comandos emitidos anteriormente. Sin embargo, TIMESTAMP difiere de D3D10DDI_QUERY_EVENT devolviendo un valor de marca de tiempo de 64 bits. Este valor de marca de tiempo de 64 bits se debe muestrear desde un contador de GPU, lo que aumenta con una frecuencia coherente. El valor de marca de tiempo debe muestrearse al instante en que la GPU haya terminado con todos los comandos emitidos anteriormente. La GPU no es necesaria para asegurarse de que todas las memorias caché se vacían en la memoria para determinar que se ha completado el trabajo. Esto es para que la satisfacción de varios tipos de consulta TIMESTAMP de alta frecuencia no moleste en gran medida la canalización. Sin embargo, la CPU debe supervisar el orden de escritura de memoria bien definido entre sí mismo y la GPU, especialmente cuando se admite D3D10DDI_QUERY_EVENT. Si la CPU determinara que la GPU escribió un valor determinado (especialmente un valor de barrera), la CPU determinaría que todas las escrituras de memoria anteriores emitidas antes de la escritura de barrera deben vaciarse en la memoria y poder verse inmediatamente por la CPU. El tipo de vaciado que podría ser necesario para obtener datos de las memorias caché de GPU y en la memoria accesible de cpu no debe realizarse cada TIMESTAMP, pero probablemente más al final de cada búfer de comandos.

La frecuencia del contador de marca de tiempo se proporciona en el contexto de un tipo de consulta D3D10DDI_QUERY_TIMESTAMPDISJOINT. La frecuencia de este contador debe ser mayor que 10 MHz y resistente a la limitación dinámica de alta frecuencia de la GPU. El contador de marca de tiempo debe ser global. Por lo tanto, el contador de marca de tiempo no es necesario tener en cuenta la segmentación de tiempo de GPU de contextos.

No se especifica el valor inicial del contador de marca de tiempo. Por lo tanto, el valor absoluto del contador de marca de tiempo no tiene sentido por sí mismo. Sin embargo, el valor relativo que se genera a partir de la diferencia de dos valores absolutos cuantifica una cantidad de tiempo transcurrido. La diferencia de dos valores de marca de tiempo solo es precisa cuando las dos consultas TIMESTAMP están entre corchetes dentro de un intervalo de D3D10DDI_QUERY_TIMESTAMPDISJOINT y cuando el valor separado de consulta de la consulta D3D10DDI_QUERY_TIMESTAMPDISJOINT devuelve FALSE.
D3D10DDI_QUERY_TIMESTAMPDISJOINT
Los datos que el controlador asocia a este tipo de consulta son una estructura de D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT . TIMESTAMPDISJOINT permite a una aplicación definir un corchete para no solo solicitar la frecuencia del reloj TIMESTAMP, sino también detectar si esa frecuencia era coherente en todo el intervalo de comandos gráficos entre corchetes. El miembro Disjoint de D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT contiene un valor BOOL que indica cuándo algo provocó que el contador de marca de tiempo se convirtiera en discontinuo o separado. Algunos ejemplos de eventos que deben desencadenar TIMESTAMPDISJOINT son un apagado, limitación hacia arriba y hacia abajo debido a eventos de ahorro de energía portátil, un cable de CA desconectado y sobrecalentamiento. Estas repeticiones de eventos deben ser lo suficientemente poco frecuentes durante un estado de ejecución estable de la aplicación de gráficos para evitarlo controlando el entorno de ejecución del sistema. Tenga en cuenta que si se producen estos eventos, reducen eficazmente la utilidad de la funcionalidad TIMESTAMP. No se espera que las consultas TIMESTAMP después de un evento que desencadene una consulta TIMESTAMPDISJOINT sean significativas en comparación con las consultas TIMESTAMP anteriores a este evento. El valor BOOL del miembro Disjoint es TRUE si no se puede garantizar que los valores de las consultas TIMESTAMP sean continuos a lo largo de la duración de la consulta TIMESTAMPDISJOINT. De lo contrario, Disjoint debe ser FALSE. El valor del miembro Frequency de D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT debe ser igual a la frecuencia del reloj TIMESTAMP.

Además, las notificaciones de estos eventos de limitación son útiles para las herramientas de investigación, regresión y supervisión del rendimiento, suponiendo que las notificaciones dan lugar a diferencias de rendimiento en la ejecución de la aplicación.
D3D10DDI_QUERY_PIPELINESTATS
Para obtener información detallada, vea la sección Comentarios de.
D3D10DDI_QUERY_OCCLUSIONPREDICATE
Los datos que el controlador asocia a este tipo de consulta es un BOOL. Este predicado refleja la especificación de la consulta OCCLUSION. Si la consulta OCCLUSION para el mismo intervalo entre corchetes devuelve 0, el predicado OCCLUSION devuelve FALSE. De lo contrario, el predicado OCCLUSION devuelve TRUE, lo que indica que al menos una muestra múltiple está visible. Si el predicado se ha indicado como una sugerencia frente a garantizada, no se propaga nunca ningún resultado a la aplicación. Este tipo de consulta es un predicado y se puede usar para predicar comandos de representación.
D3D10DDI_QUERY_STREAMOUTPUTSTATS
Los datos que el controlador asocia a este tipo de consulta son una estructura D3D10_DDI_QUERY_DATA_SO_STATISTICS . Esta estructura contiene estadísticas para supervisar la cantidad de datos que se transmiten en la fase de salida del flujo de la canalización. Estas estadísticas solo cuentan primitivos completos (por ejemplo, puntos, líneas y triángulos) que se transmiten. Si el tipo primitivo cambia (por ejemplo, líneas a triángulos), el recuento no se ajusta de ninguna manera. Es decir, el recuento es siempre primitivos totales, independientemente del tipo.

NOTA

El tiempo de ejecución de Direct3D puede llamar a la función QueryGetData del controlador en cualquier momento para solicitar estas estadísticas. Por lo tanto, debe calcularse continuamente con precisión.

Solo la diferencia entre dos solicitudes estadísticas independientes proporcionará información significativa. El controlador debe calcular la diferencia entre los datos estadísticos que recibe cuando se produce una llamada a su función QueryBegin y los datos estadísticos que recibe cuando se produce una llamada a su función QueryEnd .

D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE
Los datos que el controlador asocia a este tipo de consulta es un BOOL. Esta BOOL es TRUE si se desborda cualquier salida de flujo. Si se usaran dos consultas D3D10DDI_QUERY_STREAMOUTPUTSTATS para supervisar simultáneamente el mismo intervalo entre corchetes que un tipo de predicado STREAMOVERFLOWPREDICATE, la diferencia en los valores de los miembros PrimitivesStorageNeeded de D3D10_DDI_QUERY_DATA_SO_STATISTICS habría dado lugar a una diferencia mayor que la diferencia en los valores de los miembros NumPrimitivesWritten . STREAMOVERFLOWPREDICATE no admite la capacidad de usarse como sugerencia. Por lo tanto, se debe garantizar el tipo de predicado. Esta consulta es un predicado y se puede usar para predicar comandos de representación, lo que impide que se muestre un marco no deseado a la aplicación.

En caso de streaming a varios búferes simultáneamente, en cuanto se desborda cualquiera de ellos, la salida del flujo escribe stop para todos los búferes y los datos de STREAMOVERFLOWPREDICATE se convierten en TRUE.
D3D11DDI_QUERY_PIPELINESTATS
Compatible con Windows 7 y versiones posteriores.

Los datos que el controlador asocia a este tipo de consulta son una estructura D3D11_DDI_QUERY_DATA_PIPELINE_STATISTICS. Esta estructura contiene estadísticas para cada fase de la canalización de gráficos. Este tipo de consulta es el mismo que el tipo de consulta D3D11DDI_QUERY_PIPELINESTATS excepto D3D11_DDI_QUERY_DATA_PIPELINE_STATISTICS agrega miembros HSInvocations y DSInvocations para sombreadores de casco y dominio.
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM0
Compatible con Windows 7 y versiones posteriores.

Los datos que el controlador asocia a este tipo de consulta son una estructura D3D10_DDI_QUERY_DATA_SO_STATISTICS .
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM1
Compatible con Windows 7 y versiones posteriores.

Los datos que el controlador asocia a este tipo de consulta son una estructura D3D10_DDI_QUERY_DATA_SO_STATISTICS .
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM2
Compatible con Windows 7 y versiones posteriores.

Los datos que el controlador asocia a este tipo de consulta son una estructura D3D10_DDI_QUERY_DATA_SO_STATISTICS .
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM3
Compatible con Windows 7 y versiones posteriores.

Los datos que el controlador asocia a este tipo de consulta son una estructura D3D10_DDI_QUERY_DATA_SO_STATISTICS .
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM0
Compatible con Windows 7 y versiones posteriores.

Los datos que el controlador asocia a este tipo de consulta es un BOOL. Este BOOL es TRUE si se desborda la salida de la secuencia 0. Si se usaran dos consultas D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM0 para supervisar simultáneamente el mismo intervalo entre corchetes que un tipo de predicado de STREAMOVERFLOWPREDICATE_STREAM0, la diferencia en los valores de los miembros PrimitivesStorageNeeded de D3D10_DDI_QUERY_DATA_SO_STATISTICS habría dado lugar a una diferencia mayor que la diferencia en los valores de los miembros NumPrimitivesWritten .
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM1
Compatible con Windows 7 y versiones posteriores.

Los datos que el controlador asocia a este tipo de consulta es un BOOL. Este BOOL es TRUE si la salida de flujo 1 se desborda. Si se usaran dos consultas D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 para supervisar simultáneamente el mismo intervalo entre corchetes que un tipo de predicado STREAMOVERFLOWPREDICATE_STREAM1, la diferencia en los valores de los miembros PrimitivesStorageNeeded de D3D10_DDI_QUERY_DATA_SO_STATISTICS habría dado lugar a una diferencia mayor que la diferencia en los valores de los miembros NumPrimitivesWritten .
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM2
Compatible con Windows 7 y versiones posteriores.

Los datos que el controlador asocia a este tipo de consulta son bool. Este BOOL es TRUE si se desborda la salida del flujo 2. Si se usaran dos consultas D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 para supervisar simultáneamente el mismo intervalo entre corchetes que un tipo de predicado STREAMOVERFLOWPREDICATE_STREAM2, la diferencia en los valores de los miembros PrimitivesStorageNeeded de D3D10_DDI_QUERY_DATA_SO_STATISTICS habría dado lugar a una diferencia mayor que la diferencia en los valores de los miembros NumPrimitivesWritten .
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM3
Compatible con Windows 7 y versiones posteriores.

Los datos que el controlador asocia a este tipo de consulta son bool. Este BOOL es TRUE si se desborda la salida del flujo 3. Si se usaran dos consultas D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 para supervisar simultáneamente el mismo intervalo entre corchetes que un tipo de predicado de STREAMOVERFLOWPREDICATE_STREAM3, la diferencia en los valores de los miembros PrimitivesStorageNeeded de D3D10_DDI_QUERY_DATA_SO_STATISTICS habría dado lugar a una diferencia mayor que la diferencia en los valores de los miembros NumPrimitivesWritten .
D3D10DDI_COUNTER_GPU_IDLE
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de tiempo de inactividad de GPU.
D3D10DDI_COUNTER_VERTEX_PROCESSING
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de tiempo que el sombreador de vértices está ocupado procesando los datos.
D3D10DDI_COUNTER_GEOMETRY_PROCESSING
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de tiempo que el sombreador de geometría está ocupado procesando los datos.
D3D10DDI_COUNTER_PIXEL_PROCESSING
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de tiempo que el sombreador de píxeles está ocupado procesando los datos.
D3D10DDI_COUNTER_OTHER_GPU_PROCESSING
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de tiempo que las operaciones de GPU, distintas de las operaciones de vértice, geometría y sombreador de píxeles, están ocupadas procesando datos.
D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de un máximo teórico del uso del ancho de banda del adaptador.
D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de un máximo teórico del uso del ancho de banda de memoria de vídeo.
D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de un máximo teórico del uso del rendimiento de vértices.
D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de un máximo teórico del uso del rendimiento de la configuración de triángulos.
D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de un máximo teórico del uso del rendimiento de velocidad de relleno.
D3D10DDI_COUNTER_VERTEXSHADER_MEMORY_LIMITED
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de tiempo que el sombreador de vértices espera a que la memoria realice lecturas o escrituras de datos (frente al porcentaje de tiempo que el sombreador de vértices calcula matemáticas).
D3D10DDI_COUNTER_VERTEXSHADER_COMPUTATION_LIMITED
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de tiempo que el sombreador de vértices calcula matemáticas (frente al porcentaje de tiempo que el sombreador de vértices espera a que la memoria realice lecturas o escrituras de datos).
D3D10DDI_COUNTER_GEOMETRYSHADER_MEMORY_LIMITED
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de tiempo que el sombreador de geometría espera a que la memoria realice lecturas o escrituras de datos (frente al porcentaje de tiempo que el sombreador de geometría calcula matemáticas).
D3D10DDI_COUNTER_GEOMETRYSHADER_COMPUTATION_LIMITED
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de tiempo que el sombreador de geometría calcula matemáticas (frente al porcentaje de tiempo que el sombreador de geometría espera a que la memoria realice lecturas o escrituras de datos).
D3D10DDI_COUNTER_PIXELSHADER_MEMORY_LIMITED
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de tiempo que el sombreador de píxeles espera a que la memoria realice lecturas o escrituras de datos (frente al porcentaje de tiempo que el sombreador de píxeles calcula matemáticas).
D3D10DDI_COUNTER_PIXELSHADER_COMPUTATION_LIMITED
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de tiempo que el sombreador de píxeles calcula matemáticas (frente al porcentaje de tiempo que el sombreador de píxeles espera a que la memoria realice lecturas o escrituras de datos).
D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de vértices que el sombreador de geometría o el sombreador de píxeles recuperado de una memoria caché de vértices que el sombreador de vértices ya había transformado.

Una memoria caché de vértices transformados (es decir, vértices con los que se ejecutó el sombreador de vértices) existe inmediatamente después del sombreador de vértices. Estos vértices se pueden usar mediante el sombreador de geometría o el sombreador de píxeles. Una tasa de aciertos del 100 % (resultado de una consulta de D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE) indica que todos los vértices necesarios para el sombreador de geometría o el sombreador de píxeles ya se transformaron. Mientras que una tasa de aciertos del 0 % indica que todos los vértices requeridos por el sombreador de vértices antes de que se pudieran usar.

El controlador puede reestructurar algoritmos y datos para aumentar las tasas de aciertos de caché.
D3D10DDI_COUNTER_TEXTURE_CACHE_HIT_RATE
Los datos que el controlador asocia a este tipo de contador de consulta son un FLOAT32. El controlador devuelve el porcentaje de elementos de textura o memoria de textura que un sombreador recuperó de una memoria caché de elementos de textura que ya se recuperaron de la memoria de vídeo.

Una memoria caché de la memoria de textura puede existir entre la vista de recursos del sombreador o posiblemente el búfer de constantes y los sombreadores. Una tasa de aciertos del 100 % indica que cada elemento de textura necesario para un sombreador ya estaba disponible en la memoria caché. Mientras que una tasa de aciertos del 0 % indica que todos los elementos de textura necesarios para recuperar datos de la memoria de vídeo.

El controlador puede reestructurar algoritmos y datos para aumentar las tasas de aciertos de caché.
D3D10DDI_COUNTER_DEVICE_DEPENDENT_0
Primer contador de consultas dependiente del dispositivo disponible. Los proveedores de hardware pueden usar este valor y cualquier valor de 32 bits por encima de 0x40000000 para un contador de consultas para sus dispositivos.

Comentarios

Los valores de D3D10DDI_COUNTER_VERTEX_PROCESSING, D3D10DDI_COUNTER_GEOMETRY_PROCESSING, D3D10DDI_COUNTER_PIXEL_PROCESSING y D3D10DDI_COUNTER_OTHER_GPU_PROCESSING pueden agregar hasta un valor definido por el controlador, que es el número de unidades paralelas detectables. El controlador publica este número como parte de las funcionalidades del adaptador de gráficos. El número de unidades paralelas detectables puede ser 1, 2, 3 o 4 en función de los detalles de la arquitectura de hardware, la capacidad de los contadores de rendimiento para distinguir dónde se invierte realmente el tiempo o a discreción completa del proveedor de hardware. En el caso de las arquitecturas que notifican el número de unidades paralelas detectables igual a 1 (== 1) en el miembro NumDetectableParallelUnits de la estructura D3D10DDI_COUNTER_INFO en respuesta a una llamada a la función CheckCounterInfo , se aplica la siguiente ecuación:

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

La supervisión de todos estos identificadores de contador (junto con D3D10DDI_COUNTER_GPU_IDLE) todavía debe cumplir las reglas de contadores activos simultáneamente.

En el caso de las arquitecturas que notifican el número de unidades paralelas detectables que no son iguales a 1 (!= 1), la interacción entre cada métrica ocupada es más compleja. Por ejemplo, con el número de unidades paralelas detectables igual a 4 (== 4), D3D10DDI_COUNTER_VERTEX_PROCESSING y D3D10DDI_COUNTER_PIXEL_PROCESSING son iguales a .25 (== .25), mientras que el resto de las métricas ocupadas son iguales a 0 (== 0). D3D10DDI_COUNTER_GPU_IDLE podría dar lugar a entre .5 y .75, según la cantidad de superposición real que lograron estas unidades paralelas.

D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION, D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION, D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION, D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION y D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION notificar un porcentaje de un cuello de botella que se puede usar. A continuación, las aplicaciones pueden determinar cuándo se está estresando un determinado máximo teórico para que puedan determinar cómo solucionar el cuello de botella.

Detalles del valor de D3D10DDI_QUERY_PIPELINESTATS

Los datos que el controlador asocia a este tipo de consulta son una estructura D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS , que contiene estadísticas para cada fase de la canalización de gráficos. Para cada fase, el valor del número de invocaciones debe estar entre la caché infinita y ninguna caché. El clipper parecerá comportarse como sombreador de geometría (GS). El clipper se ejecutará para cada triángulo. Para cada invocación, se generarán cero primitivos si el triángulo original está completamente recortado, se generará un primitivo si el triángulo original no se recorta en absoluto (o el recorte da como resultado solo un triángulo), se generarán dos primitivos si se recorta el triángulo original y se generaron dos triángulos, etc. En configuraciones típicas de la canalización, el valor del miembro GSPrimitives de D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS sería igual al valor del miembro CInvocations . Si la rasterización está deshabilitada y la canalización está configurada para enviar solo primitivos a la salida de la secuencia, el valor de GSPrimitives se desviaría del valor en CInvocations porque CInvocations no incrementaría. Las estadísticas de recorte serán flexibles en lo que respecta a las implementaciones de banda de protección. Por lo tanto, al representar triángulos que se extienden más allá de la ventanilla, las pruebas garantizarán que el recorte entre un intervalo de valores (números que suponen una banda de protección infinita y números que suponen un rectángulo de recorte ajustado alrededor de la ventanilla). Todos los valores contienen el número de eventos desde la creación del contexto del dispositivo. Tenga en cuenta que estas estadísticas se pueden solicitar en cualquier momento, por lo que deben calcularse continuamente con precisión.

Solo la diferencia entre dos solicitudes estadísticas independientes proporcionará información significativa. El controlador debe calcular la diferencia entre los datos estadísticos que recibe cuando se produce una llamada a su función QueryBegin y los datos estadísticos que recibe cuando se produce una llamada a su función QueryEnd .

A continuación se muestran ejemplos de la interacción entre los valores de los miembros IAVertices, IAPrimitives y VSInvocations de D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS con respecto al almacenamiento en caché del sombreador de vértices (VS).

Escenario IaVertices valor válido Valor válido de IAPrimitives Valor válido de VSInvocations
Dibujar la franja de triángulos indizado de 4 primitivos (con todos los índices el mismo valor) 6 4 1--12
Dibujar una lista de triángulos indizado de 4 primitivos (con todos los índices el mismo valor) 12 4 1--12
Dibujar franja de triángulos de 4 primitivos 6 4 6--12
Dibujar lista de triángulos de 4 primitivos 12 4 6--12

Se permitirá que los primitivos parciales se encuentran dentro del intervalo de valores, de forma similar a la forma en que se comporta el almacenamiento en caché de vértices. Por lo tanto, cuando se pueden realizar primitivas parciales, las estadísticas deben estar entre una canalización que los recorte lo antes posible (antes incluso del ensamblador de entrada (IA) los cuenta), o tan tarde como sea posible (sombreador postpapeles y sombreador de píxeles previos (PS)). Stream salida y un GS NULL son flexibles en cuanto a si realmente hacen que se produzcan invocaciones de GS.

Con respecto al valor del miembro PSInvocations de D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS, las optimizaciones tempranas de profundidad y galería de símbolos podrían o no impedir que se realice el trabajo del sombreador de píxeles. Por lo tanto, cuando los píxeles producen una prueba de profundidad, es posible que el valor de PSInvocations se incremente o no en función de dónde se produzca realmente la prueba de profundidad en la canalización. Si el sombreador de píxeles genera profundidad, el valor de PSInvocations debe incrementarse según lo previsto, incluso si se produce un error en la profundidad de salida. En el ejemplo siguiente se muestra cómo se probará el valor en PSInvocations .

Considere el DSP (número de píxeles que pasan las pruebas de profundidad y galería de símbolos) y DSF (número de píxeles que producen errores en la prueba de profundidad o galería de símbolos). DSP es aproximadamente equivalente a la consulta OCCLUSION, excepto que OCCLUSION mide muestras múltiples (no píxeles). En todos los casos, DSP <= el valor de PSInvocations<= ( DSP + DSF ). Cuando el sombreador de píxeles genera profundidad, el valor de PSInvocations es la suma de DSP y DSF. Además, cuando un sombreador de píxeles NULL está enlazado a la canalización, el valor de PSInvocations no se incrementa.

Con respecto a los valores de IAVertices y VSInvocations, el procesamiento de vértices adyacentes podría optimizarse si el GS no declara los vértices adyacentes como entradas para el GS. Por lo tanto, cuando el GS no declara vértices adyacentes como entradas, los valores de IAVertices y VSInvocations podrían o no reflejar el trabajo implícito en los vértices adyacentes. Si el GS declara vértices adyacentes, el valor de IAVertices debe incluir los vértices adyacentes (sin tener en cuenta ningún almacenamiento en caché posterior a VS) y el valor de VSInvocations debe incluir los vértices adyacentes (junto con los efectos del almacenamiento en caché posterior a VS).

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Encabezado d3d10umddi.h (incluya D3d10umddi.h)

Consulte también

CheckCounterInfo

D3D10DDIARG_CREATEQUERY

D3D10DDI_COUNTER_INFO

D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS

D3D10_DDI_QUERY_DATA_SO_STATISTICS

D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT