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