Поделиться через


Метод 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

Тип: HANDLE

Необязательный дескриптор, который сигнализирует о завершении функции. Например, если для параметра MeasurementsAction задано значение D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS, то после завершения всех результирующей компиляции подается сигнал hEventToSignalUponCompletion .

[out] pbFurtherMeasurementsDesired

Тип: BOOL*

Необязательный указатель на логическое значение. Функция задает значение true , чтобы указать, что следует продолжить профилирование. В противном случае false— значение .

Комментарии

Графический драйвер может использовать фоновые потоки ЦП с приоритетом бездействия для динамической перекомпиляции программ шейдеров. Это может повысить производительность 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
Header d3d12.h
Библиотека d3d12.lib
DLL d3d12.dll