D3D10DDI_QUERY 열거형(d3d10umddi.h)

D3D10DDI_QUERY 열거형 형식에는 쿼리 형식을 식별하는 값이 포함됩니다.

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

상수

 
D3D10DDI_QUERY_EVENT
이 쿼리 형식은 다음 쿼리 형식 중 상당수가 GPU(그래픽 처리 장치)의 비동기 특성을 처리하기 위해 모방하는 동기화 기본 형식을 제공합니다. GPU가 그래픽 파이프라인의 백 엔드에서 이전에 실행된 모든 명령으로 완료된 후 발급된 D3D10DDI_QUERY_EVENT 신호를 수신합니다. 드라이버가 이 쿼리 형식과 연결하는 데이터는 BOOL입니다. 그러나 D3D10DDI_QUERY_EVENT 쿼리가 신호를 받으면 BOOL 값이 항상 TRUE이기 때문에 BOOL 값은 중복됩니다. 드라이버는 D3D10DDI_QUERY_EVENT 신호를 보낼 때 항상 TRUE 의 BOOL 데이터 값을 다시 보내야 합니다.
D3D10DDI_QUERY_OCCLUSION
드라이버가 이 쿼리 형식과 연결하는 통계 데이터는 UINT64입니다. 이 통계 데이터에는 디바이스 컨텍스트를 만든 이후 모든 기본 형식에 대해 깊이 및 스텐실 테스트를 통과한 다중 샘플 수("표시되는" 다중 샘플이라고도 함)가 포함됩니다. 렌더링 대상이 다중 샘플링되지 않으면 카운터가 표시되는 전체 픽셀 수만큼 증가합니다. 카운터가 오버플로되면 래핑되어야 합니다.

참고

Direct3D 런타임은 언제든지 드라이버의 QueryGetData 함수를 호출하여 이 통계 데이터를 요청할 수 있습니다. 따라서 지속적으로 정확하게 계산되어야 합니다.

두 개의 독립적인 통계 요청 간의 차이만 의미 있는 정보를 제공합니다. 드라이버는 QueryBegin 함수를 호출할 때 수신하는 통계 데이터와 QueryEnd 함수를 호출할 때 수신하는 통계 데이터 간의 차이를 계산해야 합니다.

표시되는 다중 샘플 계산을 위해 비활성화된 깊이 테스트 또는 스텐실 테스트는 다중 샘플이 비활성화된 테스트를 "통과"하는 것처럼 동작해야 합니다. 이렇게 하면 테스트 함수가 "always"로 설정된 상태에서 테스트 단위를 사용하도록 설정한 경우와 동일한 결과가 생성됩니다. 또한 렌더링 대상이 바인딩되지 않은 경우에도 이러한 값은 정상적으로 표로 표시되어야 합니다. 깊이 및 스텐실 테스트는 파이프라인의 출력 병합기 단계에서 논리적으로 발생하기 때문에 픽셀 셰이더 실행 중에 삭제된 픽셀은 폐색 카운터를 증가시키지 않습니다. 삭제된 픽셀은 논리적으로 출력 병합에도 도달하지 않습니다. 파이프라인에서 생성되는 유일한 유효 결과는 폐색 카운터의 테이블 형식인 파이프라인 구성이 있습니다.

D3D10DDI_QUERY_TIMESTAMP
드라이버가 이 쿼리 형식과 연결하는 데이터는 UINT64입니다. TIMESTAMP 쿼리 형식은 동기화 기본 형식도 제공하므로 TIMESTAMP 쿼리 형식은 D3D10DDI_QUERY_EVENT 쿼리 형식과 유사하게 사용됩니다. D3D10DDI_QUERY_EVENT 마찬가지로 GPU가 이전에 발급된 모든 명령으로 완료되면 TIMESTAMP가 신호를 받아야 합니다. 그러나 TIMESTAMP는 64비트 타임스탬프 값을 반환하여 D3D10DDI_QUERY_EVENT 다릅니다. 이 64비트 타임스탬프 값은 일관된 빈도로 증가되는 GPU 카운터에서 샘플링해야 합니다. 타임스탬프 값은 GPU가 이전에 실행된 모든 명령으로 완료되는 즉시 샘플링되어야 합니다. 모든 캐시가 메모리에 플러시되어 작업이 완료되었는지 확인하기 위해 GPU가 필요하지 않습니다. 이렇게 하면 여러 고주파 TIMESTAMP 쿼리 형식을 충족하는 것이 파이프라인을 크게 방해하지 않습니다. 그러나 CPU는 특히 D3D10DDI_QUERY_EVENT 지원되는 경우 자체와 GPU 간에 잘 정의된 메모리 쓰기 순서를 모니터링해야 합니다. CPU가 GPU가 특정 값(특히 펜스 값)을 썼다고 판단하는 경우 CPU는 펜스 쓰기 전에 발급된 모든 이전 메모리 쓰기를 메모리로 플러시하고 CPU에서 즉시 볼 수 있도록 결정합니다. GPU 캐시에서 CPU 액세스 가능한 메모리로 데이터를 가져오는 데 필요할 수 있는 플러시 유형은 모든 TIMESTAMP를 수행할 필요가 없지만 모든 명령 버퍼의 끝에서 더 많은 작업을 수행할 필요가 없습니다.

타임스탬프 카운터의 빈도는 D3D10DDI_QUERY_TIMESTAMPDISJOINT 쿼리 형식의 컨텍스트 내에서 제공됩니다. 이 카운터의 주파수는 10MHz보다 크고 GPU의 고주파 동적 제한에 저항해야 합니다. 타임스탬프 카운터는 전역이어야 합니다. 따라서 타임스탬프 카운터는 컨텍스트의 GPU 시간 조각화에 대해 고려할 필요가 없습니다.

타임스탬프 카운터의 초기 값은 지정되지 않습니다. 따라서 타임스탬프 카운터의 절대값은 일반적으로 그 자체로 의미가 없습니다. 그러나 두 절대값의 차이로 생성된 상대 값은 경과된 시간을 정량화합니다. 두 타임스탬프 값의 차이는 두 TIMESTAMP 쿼리가 D3D10DDI_QUERY_TIMESTAMPDISJOINT 범위 내에서 대괄호로 묶이고 D3D10DDI_QUERY_TIMESTAMPDISJOINT 쿼리의 쿼리 비연속 값이 FALSE를 반환하는 경우에만 정확합니다.
D3D10DDI_QUERY_TIMESTAMPDISJOINT
드라이버가 이 쿼리 형식과 연결하는 데이터는 D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT 구조입니다. TIMESTAMPDISJOINT를 사용하면 애플리케이션이 대괄호를 정의하여 TIMESTAMP 클록의 빈도를 요청할 뿐만 아니라 해당 빈도가 전체 대괄호로 묶인 그래픽 명령 범위 전체에서 일관된지 검색할 수 있습니다. D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT Disjoint 멤버에는 타임스탬프 카운터가 불연속적이거나 연결되지 않은 경우를 나타내는 BOOL 값이 포함되어 있습니다. TIMESTAMPDISJOINT를 트리거해야 하는 이벤트의 몇 가지 예는 전원이 다운되어 노트북 절전 이벤트, 분리된 AC 코드 및 과열로 인해 위아래로 제한됩니다. 이러한 이벤트 발생은 시스템 실행 환경을 제어하여 피할 수 있도록 안정적인 그래픽 애플리케이션 실행 상태 중에는 거의 발생하지 않아야 합니다. 이러한 이벤트가 발생하면 TIMESTAMP 기능의 유용성을 효과적으로 줄일 수 있습니다. TIMESTAMPDISJOINT 쿼리를 트리거하는 이벤트 이후의 TIMESTAMP 쿼리는 이러한 이벤트 이전의 TIMESTAMP 쿼리에 비해 의미가 없을 것으로 예상됩니다. TIMESTAMPDISJOINT 쿼리 기간 동안 TIMESTAMP 쿼리의 값이 연속되도록 보장할 수 없는 경우 Disjoint 멤버의 BOOL 값은 TRUE 입니다. Otheriwse, DisjointFALSE여야 합니다. D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT Frequency 멤버의 값은 TIMESTAMP 클록의 빈도와 같아야 합니다.

또한 이러한 제한 이벤트의 알림은 성능 모니터링, 회귀 및 조사 도구에 유용하며, 알림으로 인해 애플리케이션 실행의 성능 차이가 발생합니다.
D3D10DDI_QUERY_PIPELINESTATS
자세한 내용은 설명을 참조하세요.
D3D10DDI_QUERY_OCCLUSIONPREDICATE
드라이버가 이 쿼리 형식과 연결하는 데이터는 BOOL입니다. 이 조건자는 OCCLUSION 쿼리에 대한 사양을 미러링합니다. 동일한 대괄호로 묶인 범위에 대한 OCCLUSION 쿼리가 0을 반환하면 OCCLUSION 조건자는 FALSE를 반환합니다. 그렇지 않으면 OCCLUSION 조건자는 하나 이상의 다중 샘플이 표시됨을 나타내는 TRUE를 반환합니다. 조건자가 힌트와 보장된 것으로 표시되면 결과가 애플리케이션으로 다시 전파되지 않습니다. 이 쿼리 형식은 조건자이며 렌더링 명령을 조건자하는 데 사용할 수 있습니다.
D3D10DDI_QUERY_STREAMOUTPUTSTATS
드라이버가 이 쿼리 형식과 연결하는 데이터는 D3D10_DDI_QUERY_DATA_SO_STATISTICS 구조입니다. 이 구조에는 파이프라인의 스트림 출력 단계에서 스트리밍되는 데이터의 양을 모니터링하기 위한 통계가 포함되어 있습니다. 이러한 통계는 스트리밍되는 전체 기본 형식(예: 점, 선 및 삼각형)만 계산합니다. 기본 형식이 변경되는 경우(예: 삼각형에 대한 선) 계산은 어떤 방식으로도 조정되지 않습니다. 즉, 개수는 형식에 관계없이 항상 총 기본 형식입니다.

참고

Direct3D 런타임은 언제든지 드라이버의 QueryGetData 함수를 호출하여 이러한 통계를 요청할 수 있습니다. 따라서 지속적으로 정확하게 계산되어야 합니다.

두 개의 독립적인 통계 요청 간의 차이만 의미 있는 정보를 제공합니다. 드라이버는 QueryBegin 함수를 호출할 때 수신하는 통계 데이터와 QueryEnd 함수를 호출할 때 수신하는 통계 데이터 간의 차이를 계산해야 합니다.

D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE
드라이버가 이 쿼리 형식과 연결하는 데이터는 BOOL입니다. 스트림 출력이 오버플로된 경우 이 BOOL은 TRUE 입니다. 두 개의 D3D10DDI_QUERY_STREAMOUTPUTSTATS 쿼리를 사용하여 STREAMOVERFLOWPREDICATE 조건자 형식과 동일한 대괄호로 묶인 범위를 동시에 모니터링하는 경우 D3D10_DDI_QUERY_DATA_SO_STATISTICSPrimitivesStorageNeeded 멤버의 값 차이로 인해 NumPrimitivesWritten 멤버의 값 차이보다 큰 차이가 발생합니다. STREAMOVERFLOWPREDICATE는 힌트로 사용할 수 있는 기능을 지원하지 않습니다. 따라서 조건자 형식을 보장해야 합니다. 이 쿼리는 조건자이며 원치 않는 프레임이 애플리케이션에 표시되지 않도록 하는 렌더링 명령을 조건자로 사용하는 데 사용할 수 있습니다.

여러 버퍼로 동시에 스트리밍하는 경우 중 하나가 오버플로되는 즉시 스트림 출력은 모든 버퍼에 대해 중지되고 STREAMOVERFLOWPREDICATE에 대한 데이터는 TRUE가 됩니다.
D3D11DDI_QUERY_PIPELINESTATS
Windows 7 이상 버전에서 지원됩니다.

드라이버가 이 쿼리 형식과 연결하는 데이터는 D3D11_DDI_QUERY_DATA_PIPELINE_STATISTICS 구조입니다. 이 구조체에는 그래픽 파이프라인의 각 단계에 대한 통계가 포함됩니다. 이 쿼리 형식은 헐 및 도메인 셰이더에 대한 HSInvocationsDSInvocations 멤버를 추가하는 D3D11_DDI_QUERY_DATA_PIPELINE_STATISTICS 제외하면 D3D11DDI_QUERY_PIPELINESTATS 쿼리 형식과 동일합니다.
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM0
Windows 7 이상 버전에서 지원됩니다.

드라이버가 이 쿼리 형식과 연결하는 데이터는 D3D10_DDI_QUERY_DATA_SO_STATISTICS 구조입니다.
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM1
Windows 7 이상 버전에서 지원됩니다.

드라이버가 이 쿼리 형식과 연결하는 데이터는 D3D10_DDI_QUERY_DATA_SO_STATISTICS 구조입니다.
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM2
Windows 7 이상 버전에서 지원됩니다.

드라이버가 이 쿼리 형식과 연결하는 데이터는 D3D10_DDI_QUERY_DATA_SO_STATISTICS 구조입니다.
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM3
Windows 7 이상 버전에서 지원됩니다.

드라이버가 이 쿼리 형식과 연결하는 데이터는 D3D10_DDI_QUERY_DATA_SO_STATISTICS 구조입니다.
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM0
Windows 7 이상 버전에서 지원됩니다.

드라이버가 이 쿼리 형식과 연결하는 데이터는 BOOL입니다. 스트림 0 출력이 오버플로된 경우 이 BOOL은 TRUE 입니다. 두 개의 D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM0 쿼리를 사용하여 STREAMOVERFLOWPREDICATE_STREAM0 조건자 형식과 동일한 대괄호로 묶인 범위를 동시에 모니터링하는 경우 D3D10_DDI_QUERY_DATA_SO_STATISTICSPrimitivesStorageNeeded 멤버의 값 차이로 인해 NumPrimitivesWritten 멤버의 값 차이보다 큰 차이가 발생합니다.
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM1
Windows 7 이상 버전에서 지원됩니다.

드라이버가 이 쿼리 형식과 연결하는 데이터는 BOOL입니다. 스트림 1 출력이 오버플로된 경우 이 BOOL은 TRUE 입니다. 두 개의 D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 쿼리를 사용하여 STREAMOVERFLOWPREDICATE_STREAM1 조건자 형식과 동일한 대괄호로 묶인 범위를 동시에 모니터링하는 경우 D3D10_DDI_QUERY_DATA_SO_STATISTICSPrimitivesStorageNeeded 멤버의 값 차이로 인해 NumPrimitivesWritten 멤버의 값 차이보다 큰 차이가 발생합니다.
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM2
Windows 7 이상 버전에서 지원됩니다.

드라이버가 이 쿼리 형식과 연결하는 데이터는 BOOL입니다. 스트림 2 출력이 오버플로된 경우 이 BOOL은 TRUE 입니다. 두 개의 D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 쿼리를 사용하여 STREAMOVERFLOWPREDICATE_STREAM2 조건자 형식과 동일한 대괄호로 묶인 범위를 동시에 모니터링하는 경우 D3D10_DDI_QUERY_DATA_SO_STATISTICSPrimitivesStorageNeeded 멤버의 값 차이로 인해 NumPrimitivesWritten 멤버의 값 차이보다 큰 차이가 발생합니다.
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM3
Windows 7 이상 버전에서 지원됩니다.

드라이버가 이 쿼리 형식과 연결하는 데이터는 BOOL입니다. 스트림 3 출력이 오버플로된 경우 이 BOOL은 TRUE 입니다. 두 개의 D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 쿼리를 사용하여 STREAMOVERFLOWPREDICATE_STREAM3 조건자 형식과 동일한 대괄호로 묶인 범위를 동시에 모니터링하는 경우 D3D10_DDI_QUERY_DATA_SO_STATISTICSPrimitivesStorageNeeded 멤버의 값 차이로 인해 NumPrimitivesWritten 멤버의 값 차이보다 큰 차이가 발생합니다.
D3D10DDI_COUNTER_GPU_IDLE
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 GPU 유휴 시간의 백분율을 반환합니다.
D3D10DDI_COUNTER_VERTEX_PROCESSING
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 꼭짓점 셰이더가 데이터를 처리 중일 때의 백분율을 반환합니다.
D3D10DDI_COUNTER_GEOMETRY_PROCESSING
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 기하 도형 셰이더가 데이터를 처리 중일 때의 백분율을 반환합니다.
D3D10DDI_COUNTER_PIXEL_PROCESSING
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 픽셀 셰이더가 데이터를 처리 중일 때의 백분율을 반환합니다.
D3D10DDI_COUNTER_OTHER_GPU_PROCESSING
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 꼭짓점, 기하 도형 및 픽셀 셰이더 작업 이외의 GPU 작업이 데이터를 처리하는 데 사용 중인 시간의 백분율을 반환합니다.
D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 이론적 최대 어댑터 대역폭 사용률의 백분율을 반환합니다.
D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 비디오 메모리 대역폭 사용률의 이론적 최대 백분율을 반환합니다.
D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 이론적 최대 꼭짓점 처리량 사용률의 백분율을 반환합니다.
D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 삼각형 설정 처리량 사용률의 이론적 최대 백분율을 반환합니다.
D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 이론적 최대 채우기 속도 처리량 사용률의 백분율을 반환합니다.
D3D10DDI_COUNTER_VERTEXSHADER_MEMORY_LIMITED
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 꼭짓점 셰이더가 메모리가 데이터의 읽기 또는 쓰기를 수행하기 위해 대기하는 시간의 백분율을 반환합니다(꼭짓점 셰이더가 수학을 계산하는 시간의 백분율과 비교).
D3D10DDI_COUNTER_VERTEXSHADER_COMPUTATION_LIMITED
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 꼭짓점 셰이더가 수학을 계산하는 시간의 백분율을 반환합니다(꼭짓점 셰이더가 메모리가 데이터 읽기 또는 쓰기를 수행하기 위해 대기하는 시간의 백분율과 비교).
D3D10DDI_COUNTER_GEOMETRYSHADER_MEMORY_LIMITED
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 기하 도형 셰이더가 메모리가 데이터의 읽기 또는 쓰기를 수행하기 위해 대기하는 시간의 백분율을 반환합니다(기하 도형 셰이더가 수학을 계산하는 시간의 백분율과 비교).
D3D10DDI_COUNTER_GEOMETRYSHADER_COMPUTATION_LIMITED
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 기하 도형 셰이더가 수학을 계산하는 시간의 백분율을 반환합니다(기하 도형 셰이더가 메모리가 데이터 읽기 또는 쓰기를 수행하기를 기다리는 시간의 백분율과 비교).
D3D10DDI_COUNTER_PIXELSHADER_MEMORY_LIMITED
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 픽셀 셰이더가 메모리가 데이터의 읽기 또는 쓰기를 수행하기 위해 대기하는 시간의 백분율을 반환합니다(픽셀 셰이더가 수학을 계산하는 시간의 백분율과 비교).
D3D10DDI_COUNTER_PIXELSHADER_COMPUTATION_LIMITED
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 픽셀 셰이더가 수학을 계산하는 시간의 백분율을 반환합니다(픽셀 셰이더가 메모리가 데이터 읽기 또는 쓰기를 수행하기 위해 대기하는 시간의 백분율과 비교).
D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 꼭짓점 셰이더에 의해 이미 변환된 꼭짓점 캐시에서 기하 도형 셰이더 또는 픽셀 셰이더가 검색한 꼭짓점의 백분율을 반환합니다.

변환된 꼭짓점(즉, 꼭짓점 셰이더가 실행된 꼭짓점)의 캐시는 꼭짓점 셰이더 바로 다음에 존재합니다. 이러한 꼭짓점은 기하 도형 셰이더 또는 픽셀 셰이더에서 사용할 수 있습니다. 100% 적중률(D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE 쿼리 결과)은 기하 도형 셰이더 또는 픽셀 셰이더에 필요한 모든 꼭짓점이 이미 변환되었음을 나타냅니다. 0%의 적중률은 꼭짓점 셰이더를 사용하려면 꼭짓점 셰이더에서 처리해야 하는 모든 꼭짓점을 나타냅니다.

드라이버는 알고리즘 및 데이터를 재구성하여 캐시 적중률을 높일 수 있습니다.
D3D10DDI_COUNTER_TEXTURE_CACHE_HIT_RATE
드라이버가 이 쿼리 카운터 형식과 연결하는 데이터는 FLOAT32. 드라이버는 셰이더가 비디오 메모리에서 이미 검색된 텍셀 캐시에서 검색한 텍셀 또는 텍스처 메모리의 백분율을 반환합니다.

셰이더 리소스 뷰 또는 상수 버퍼와 셰이더 사이에 텍스처 메모리 캐시가 있을 수 있습니다. 100% 적중률은 셰이더에 필요한 모든 텍셀이 캐시에서 이미 사용 가능했음을 나타냅니다. 0%의 적중률은 모든 텍셀이 비디오 메모리에서 데이터를 검색해야 했음을 나타냅니다.

드라이버는 알고리즘 및 데이터를 재구성하여 캐시 적중률을 높일 수 있습니다.
D3D10DDI_COUNTER_DEVICE_DEPENDENT_0
사용 가능한 첫 번째 디바이스 종속 쿼리 카운터입니다. 하드웨어 공급업체는 디바이스에 대한 쿼리 카운터에 이 값과 0x40000000 위의 32비트 값을 사용할 수 있습니다.

설명

D3D10DDI_COUNTER_VERTEX_PROCESSING, D3D10DDI_COUNTER_GEOMETRY_PROCESSING, D3D10DDI_COUNTER_PIXEL_PROCESSING 및 D3D10DDI_COUNTER_OTHER_GPU_PROCESSING 값은 검색 가능한 병렬 단위 수인 드라이버 정의 값에 추가할 수 있습니다. 이 숫자는 그래픽 어댑터 기능의 일부로 드라이버에 의해 게시됩니다. 검색 가능한 병렬 단위의 수는 하드웨어 아키텍처 세부 정보, 실제로 소요되는 시간을 파악하는 성능 카운터의 기능 또는 하드웨어 공급업체의 완전한 재량에 따라 1, 2, 3 또는 4일 수 있습니다. CheckCounterInfo 함수 호출에 대한 응답으로 D3D10DDI_COUNTER_INFO 구조체의 NumDetectableParallelUnits 멤버에서 검색 가능한 병렬 단위 수가 1(== 1)인 것을 보고하는 아키텍처의 경우 다음 수식이 적용됩니다.

(D3D10DDI_COUNTER_VERTEX_PROCESSING + D3D10DDI_COUNTER_GEOMETRY_PROCESSING + D3D10DDI_COUNTER_PIXEL_PROCESSING + D3D10DDI_COUNTER_OTHER_GPU_PROCESSING) / NumDetectableParallelUnits = 1.0 - D3D10DDI_COUNTER_GPU_IDLE

이러한 모든 카운터 식별자(D3D10DDI_COUNTER_GPU_IDLE 함께)의 모니터링은 여전히 동시에 활성 카운터의 규칙을 준수해야 합니다.

검색 가능한 병렬 단위 수가 1(!= 1)과 같지 않다고 보고하는 아키텍처의 경우 사용 중인 각 메트릭 간의 상호 작용이 더 복잡합니다. 예를 들어 검색 가능한 병렬 단위 수가 4(== 4)인 경우 D3D10DDI_COUNTER_VERTEX_PROCESSING 및 D3D10DDI_COUNTER_PIXEL_PROCESSING .25(== .25)와 같고 나머지 사용 중인 메트릭은 0(== 0)과 같습니다. D3D10DDI_COUNTER_GPU_IDLE 이러한 병렬 단위가 실제로 얼마나 겹치는지에 따라 .5에서 .75 사이가 발생할 수 있습니다.

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_QUERY_PIPELINESTATS 값에 대한 세부 정보

드라이버가 이 쿼리 형식과 연결하는 데이터는 그래픽 파이프라인의 각 단계에 대한 통계를 포함하는 D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS 구조입니다. 각 단계에서 호출 수의 값은 무한 캐시와 캐시 없음 사이에 있어야 합니다. 클리퍼는 GS(기하 도형 셰이더)로 동작하는 것처럼 보입니다. 각 삼각형에 대해 클리퍼가 실행됩니다. 각 호출에 대해 원래 삼각형이 완전히 잘리면 기본 형식이 0개 생성되고, 원래 삼각형이 전혀 잘리지 않거나 클리핑이 하나의 삼각형으로만 생성되면 하나의 기본 형식이 생성되고, 원래 삼각형이 잘려서 두 개의 삼각형이 생성된 경우 두 개의 기본 형식이 생성됩니다. 파이프라인의 일반적인 구성에서 D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICSGSPrimitives 멤버의 값은 CInvocations 멤버의 값과 같습니다. 래스터화를 사용하지 않도록 설정되고 파이프라인이 기본 형식만 스트림 출력에 보내도록 구성된 경우 CInvocations가 증가하지 않으므로 GSPrimitives의 값이 CInvocations의 값에서 벗어나게 됩니다. 클리핑 통계는 가드 밴드 구현과 관련하여 유연합니다. 따라서 뷰포트를 넘어 확장되는 삼각형을 렌더링할 때 테스트는 클리핑이 값 범위(무한 가드 밴드를 가정하는 숫자와 뷰포트 주변의 꽉 클리핑 사각형을 가정하는 숫자) 사이에 있는지 확인합니다. 모든 값에는 디바이스 컨텍스트를 만든 이후의 이벤트 수가 포함됩니다. 이러한 통계는 언제든지 요청할 수 있으므로 지속적으로 정확하게 계산해야 합니다.

두 개의 독립적인 통계 요청 간의 차이만 의미 있는 정보를 제공합니다. 드라이버는 QueryBegin 함수를 호출할 때 수신하는 통계 데이터와 QueryEnd 함수를 호출할 때 수신하는 통계 데이터 간의 차이를 계산해야 합니다.

다음은 VS(꼭짓점 셰이더) 캐싱 후와 관련하여 D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICSIAVertices, IAPrimitivesVSInvocations 멤버의 값 간의 상호 작용 예입니다.

시나리오 IAVertices 유효한 값 IAPrimitives 유효한 값 VSInvocations 유효한 값
4개의 기본 형식으로 인덱싱된 삼각형 스트립 그리기(모든 인덱스가 동일한 값) 6 4 1--12
4개의 기본 형식으로 인덱싱된 삼각형 목록 그리기(모든 인덱스가 동일한 값) 12 4 1--12
4개의 원형 삼각형 스트립 그리기 6 4 6--12
4개의 기본 형식의 삼각형 목록 그리기 12 4 6--12

부분 기본 형식은 꼭짓점 캐싱이 동작하는 방식과 유사하게 값 범위 내에 속할 수 있습니다. 따라서 부분 기본 형식이 가능한 경우 통계는 가능한 한 빨리(IA(입력 어셈블러)가 계산되기 전에) 또는 가능한 한 늦게(포스트 클리퍼 및 PS(전 픽셀 셰이더)) 파이프라인 간에 통계가 있어야 합니다. Stream 출력 및 NULL GS는 실제로 GS 호출이 발생하는지 여부에 대해 유연합니다.

D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICSPSInvocations 멤버의 값과 관련하여 초기 깊이 및 스텐실 최적화로 인해 픽셀 셰이더의 작업이 실현되지 않을 수도 있고 그렇지 않을 수도 있습니다. 따라서 픽셀이 깊이 테스트에 실패하면 파이프라인에서 깊이 테스트가 실제로 발생하는 위치에 따라 PSInvocations 의 값이 증가하거나 증가하지 않을 수 있습니다. 픽셀 셰이더가 깊이를 출력하는 경우 출력 깊이가 실패하더라도 PSInvocations 의 값이 예상대로 증가해야 합니다. 다음 예제에서는 PSInvocations 의 값을 테스트하는 방법을 보여 줍니다.

DSP(깊이 및 스텐실 테스트를 통과하는 픽셀 수) 및 DSF(깊이 또는 스텐실 테스트에 실패한 픽셀 수) 수량을 고려합니다. DSP는 OCCLUSION이 다중 샘플(픽셀 아님)을 측정한다는 점을 제외하고 OCCLUSION 쿼리와 거의 동일합니다. 모든 경우에 DSP <= PSInvocations<= ( DSP + DSF )의 값입니다. 픽셀 셰이더가 깊이를 출력하면 PSInvocations 의 값은 DSP 및 DSF의 합계입니다. 또한 NULL 픽셀 셰이더가 파이프라인에 바인딩되면 PSInvocations 의 값이 증가하지 않습니다.

IAVerticesVSInvocations의 값과 관련하여 GS가 인접 꼭짓점을 GS에 대한 입력으로 선언하지 않으면 인접한 꼭짓점 처리가 최적화될 수 있습니다. 따라서 GS가 인접한 꼭짓점을 입력으로 선언하지 않는 경우 IAVerticesVSInvocations 의 값은 인접한 꼭짓점이 암시하는 작업을 반영하거나 반영하지 않을 수 있습니다. GS가 인접한 꼭짓점을 선언하는 경우 IAVertices 의 값에는 인접한 꼭짓점(사후 VS 캐싱과 관계없이)이 포함되어야 하며 VSInvocations 의 값에는 인접한 꼭짓점(VS 캐싱 이후의 효과와 함께)이 포함되어야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
머리글 d3d10umddi.h(D3d10umddi.h 포함)

추가 정보

CheckCounterInfo

D3D10DDIARG_CREATEQUERY

D3D10DDI_COUNTER_INFO

D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS

D3D10_DDI_QUERY_DATA_SO_STATISTICS

D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT