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

类型: D3D12_MEASUREMENTS_ACTION

要对早期工作负荷检测的结果执行的操作。

[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