ID3D12Device6::SetBackgroundProcessingMode 메서드(d3d12.h)
드라이버 백그라운드 처리 최적화 모드를 설정합니다.
구문
HRESULT SetBackgroundProcessingMode(
[in] D3D12_BACKGROUND_PROCESSING_MODE Mode,
[in] D3D12_MEASUREMENTS_ACTION MeasurementsAction,
[in] HANDLE hEventToSignalUponCompletion,
[out] BOOL *pbFurtherMeasurementsDesired
);
매개 변수
[in] Mode
형식: D3D12_BACKGROUND_PROCESSING_MODE
이후에 제출되는 GPU 작업에 적용할 동적 최적화 수준입니다.
[in] MeasurementsAction
이전 워크로드 계측의 결과와 함께 수행할 작업입니다.
[in] hEventToSignalUponCompletion
형식: HANDLE
함수가 완료된 시점을 알리는 선택적 핸들입니다. 예를 들어 MeasurementsAction 이 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS 설정된 경우 결과 컴파일이 모두 완료되면 hEventToSignalUponCompletion 이 신호를 보냅니다.
[out] pbFurtherMeasurementsDesired
형식: BOOL*
부울 값에 대한 선택적 포인터입니다. 함수는 프로파일링을 계속해야 함을 나타내도록 값을 로 true
설정합니다. 그렇지 않으면 false
입니다.
설명
그래픽 드라이버는 유휴 우선 순위 백그라운드 CPU 스레드를 사용하여 셰이더 프로그램을 동적으로 다시 컴파일할 수 있습니다. 따라서 실행 중인 하드웨어의 세부 정보 및/또는 사용 중인 컨텍스트와 더 잘 일치하도록 셰이더 코드를 특수화하여 GPU 성능을 향상시킬 수 있습니다.
개발자는 이 기능을 활용하기 위해 아무 작업도 수행할 필요가 없습니다(시간이 지남에 따라 드라이버가 백그라운드 처리 최적화를 채택하므로 기존 셰이더가 자동으로 더 효율적으로 조정됨). 그러나 코드를 프로파일링할 때 타이밍 측정을 수행하기 전에 SetBackgroundProcessingMode 를 호출하여 드라이버 백그라운드 처리 최적화가 수행되었는지 확인하는 것이 좋습니다. 예제는 다음과 같습니다.
SetBackgroundProcessingMode(
D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
D3D_MEASUREMENTS_ACTION_KEEP_ALL,
nullptr, nullptr);
// Here, prime the system by rendering some typical content.
// For example, a level flythrough.
SetBackgroundProcessingMode(
D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
nullptr, nullptr);
// Here, continue rendering. This time with dynamic optimizations applied.
// And then take your measurements.
PIX 는 SetBackgroundProcessingMode를 자동으로 사용합니다. 먼저 시스템을 초기화한 다음 분석 중간에 추가 변경이 발생하지 않도록 합니다. PIX는 측정을 시작하기 전에 이벤트를 대기합니다(모든 백그라운드 셰이더 다시 컴파일이 완료되었는지 확인).
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 빌드 20348 |
지원되는 최소 서버 | Windows 10 빌드 20348 |
대상 플랫폼 | Windows |
헤더 | d3d12.h |
라이브러리 | d3d12.lib |
DLL | d3d12.dll |