D3D11_TRACE_STEP 구조체(d3d11shadertracing.h)
명령인 추적 단계를 설명합니다.
구문
typedef struct D3D11_TRACE_STEP {
UINT ID;
BOOL InstructionActive;
UINT8 NumRegistersWritten;
UINT8 NumRegistersRead;
D3D11_TRACE_MISC_OPERATIONS_MASK MiscOperations;
UINT OpcodeType;
UINT64 CurrentGlobalCycle;
} D3D11_TRACE_STEP;
멤버
ID
셰이더에 있는 실행 명령의 오프셋으로 명령을 식별하는 숫자입니다.
HLSL 디버깅 정보는 동일한 규칙을 사용합니다. 따라서 HLSL 지침은 ID 집합과 일치합니다. 그런 다음 ID를 사용자에게 표시할 수 있는 디스어셈블된 문자열에 매핑할 수 있습니다.
InstructionActive
명령이 활성 상태인지 여부를 지정하는 값입니다. 이 값은 발생한 경우 TRUE입니다. 따라서 이 구조의 다른 데이터를 구문 분석해야 합니다. 그렇지 않으면 아무 일도 일어나지 않았습니다. 예를 들어 스탬프의 다른 픽셀이 실행되더라도 흐름 제어로 인해 명령이 비활성화된 경우입니다.
NumRegistersWritten
기록되는 명령에 대한 레지스터 수입니다. 레지스터 범위는 [0...NumRegistersWritten-1]입니다. ID3D11ShaderTrace::GetWrittenRegister의 writtenRegisterIndex 매개 변수에 레지스터 번호를 전달하여 개별 쓰기 등록 정보를 검색할 수 있습니다.
NumRegistersRead
읽은 명령에 대한 레지스터 수입니다. 레지스터 범위는 [0...NumRegistersRead-1]입니다. ID3D11ShaderTrace::GetReadRegister의 readRegisterIndex 매개 변수에 레지스터 번호를 전달하여 개별 읽기 등록 정보를 검색할 수 있습니다.
MiscOperations
비트 OR 연산을 사용하여 결합된 다음 값의 조합입니다. 결과 값은 추적 기타 작업의 마스크를 지정합니다. 이러한 플래그는 출력 레지스터를 작성하지 않을 때 셰이더 작업의 가능한 효과를 나타냅니다. 예를 들어 "r0 추가, r1 ,r2" 작업은 r0 레지스터에 씁니다. 따라서 추적 기록 레지스터의 정보를 확인하여 변경된 작업을 확인할 수 있습니다. 그러나 일부 셰이더 지침은 레지스터를 작성하지 않지만 여전히 해당 레지스터에 영향을 줍니다.
플래그 | 설명 |
---|---|
D3D11_TRACE_MISC_GS_EMIT(0x1) | 이 작업은 기하 도형 셰이더 데이터 내보내기였습니다. |
D3D11_TRACE_MISC_GS_CUT(0x2) | 이 연산은 기하 도형 셰이더 스트립 컷이었습니다. |
D3D11_TRACE_MISC_PS_DISCARD(0x4) | 이 작업은 픽셀을 거부하는 픽셀 셰이더 삭제였습니다. |
D3D11_TRACE_MISC_GS_EMIT_STREAM(0x8) | 내보낼 특정 스트림을 지정할 수 있는 셰이더 모델 5 를 제외하고 D3D11_TRACE_MISC_GS_EMIT 동일합니다. |
D3D11_TRACE_MISC_GS_CUT_STREAM(0x10) | 셰이 더 모델 5 에서 잘라내기를 제거할 특정 스트림을 지정할 수 있는 경우를 제외하고 D3D11_TRACE_MISC_GS_CUT 동일합니다. |
D3D11_TRACE_MISC_HALT(0x20) | 이 작업은 셰이더 실행을 중지하는 셰이더 중지 명령이었습니다. HLSL 중단 내장 함수가 중단됩니다. |
D3D11_TRACE_MISC_MESSAGE(0x40) | 작업은 정보 큐에 기록할 수 있는 셰이더 메시지 출력이었습니다. HLSL printf 및 errorf 내장 함수는 메시지를 발생합니다. |
NumRegistersWritten 멤버가 0이면 이 멤버가 여전히 비어 있을 수 있지만 이 멤버를 검사합니다(0).
OpcodeType
명령 유형(예: add, mul 등)을 지정하는 숫자입니다. 명령 형식의 번호를 모르는 경우 이 멤버를 무시할 수 있습니다. 이 멤버는 추적을 약간 블로팅하는 비용으로 사소한 편의를 제공합니다. ID 멤버를 사용하고 원래 셰이더 코드에 다시 매핑하여 명령에 대한 전체 정보를 검색할 수 있습니다.
CurrentGlobalCycle
이 단계의 전역 주기 수입니다. 이 멤버를 사용하여 여러 동시 추적(예: 컴퓨팅 셰이더)을 통해 병렬 스레드 실행의 상관 관계를 지정할 수 있습니다.
설명
이 API에는 Windows 8용 Windows SDK(소프트웨어 개발 키트)가 필요합니다.
요구 사항
지원되는 최소 클라이언트 | Windows 8 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2012 [데스크톱 앱만 해당] |
머리글 | d3d11shadertracing.h |