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
类型: 句柄
一个可选句柄,用于在函数完成时发出信号。 例如,如果 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 |
Library | d3d12.lib |
DLL | d3d12.dll |