Перечисление D3D12DDI_BACKGROUND_PROCESSING_MODE_0062 (d3d12umddi.h)

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

По умолчанию среда выполнения запланирует не более одной фоновой задачи компиляции за один раз, выполняющуюся с приоритетом бездействия, чтобы свести к минимуму риск этой работы, что приведет к сбоям при отрисовке переднего плана.

Разработчики и средства профилирования могут настроить это поведение, используя сочетания этих значений перечисления.

Синтаксис

typedef enum D3D12DDI_BACKGROUND_PROCESSING_MODE_0062 {
  D3D12DDI_BACKGROUND_PROCESSING_MODE_0062_ALLOWED,
  D3D12DDI_BACKGROUND_PROCESSING_MODE_0062_ALLOW_INTRUSIVE_MEASUREMENTS,
  D3D12DDI_BACKGROUND_PROCESSING_MODE_0062_DISABLE_BACKGROUND_WORK,
  D3D12DDI_BACKGROUND_PROCESSING_MODE_0062_DISABLE_ALL_PROFILING
} ;

Константы

 
D3D12DDI_BACKGROUND_PROCESSING_MODE_0062_ALLOWED
D3D12DDI_BACKGROUND_PROCESSING_MODE_0062_ALLOWED — это состояние по умолчанию, в котором драйверы могут инструментировать рабочие нагрузки любым способом по своему выбору и отправлять задачи ЦП (обычно перекомпиляция PSO) в среду выполнения D3D для выполнения с низким приоритетом. Цель этого режима — включить динамическую оптимизацию, но не влиять на производительность отрисовки переднего плана.
D3D12DDI_BACKGROUND_PROCESSING_MODE_0062_ALLOW_INTRUSIVE_MEASUREMENTS
D3D12DDI_BACKGROUND_PROCESSING_MODE_0062_ALLOW_INTRUSIVE_MEASUREMENTS подсказывает, что драйвер должен уделять приоритетное внимание богатству и полноте инструментирования, а не избежать сбоев, так как текущая отрисовка выполняется специально для целей обучения и не должна выполняться с обычной плавной производительностью.

Этот вид тяжелого профилирования будет использоваться средствами анализа, такими как PIX. Он также может использоваться тестами производительности для нагрева состояния оптимизации перед фактическими измерениями производительности или непосредственно в играх в соответствующее время (например, предварительное обучение драйвера путем отрисовки невидимого содержимого за меню).
D3D12DDI_BACKGROUND_PROCESSING_MODE_0062_DISABLE_BACKGROUND_WORK
D3D12DDI_BACKGROUND_PROCESSING_MODE_0062_DISABLE_BACKGROUND_WORK предотвращает выполнение задач фоновой обработки. При первом включении этого флага все уже выполняющиеся задачи будут разрешены к завершению. Задачи, отправленные UMD, но еще не запущенные, будут отменены, а все вызовы QueueProcessingWorkCB , которые уже находятся в этом состоянии, приведут к немедленному вызову обратного вызова отмены.

Конечно, UMD может полностью пропустить отправку задач в отключенном состоянии, но если она отправляет работу, среда выполнения отменит, а не просто завершит операцию отправки, чтобы избежать необходимости синхронизации UMD между отправкой работы и изменениями режима.

Если флаг отключения включен одновременно с указанием D3D12DDI_MEASUREMENTS_ACTION_0062_COMMIT_*, все новые задачи, создаваемые UMD в ответ на запрос фиксации, будут выполнены до того, как отключение вступит в силу.

Флаг отключения действителен, только если включен режим разработчика.
D3D12DDI_BACKGROUND_PROCESSING_MODE_0062_DISABLE_ALL_PROFILING
Помимо приостановки динамической перекомпиляции шейдера, это означает, что драйверу следует избегать внесения изменений в поведение, которые могут понизить производительность, таких как динамическая настройка политик кэша или шаблонов диспетчеризации вычислений. Это предназначено для использования во время сеансов профилирования, где A/B-сравнение должно обеспечивать стабильные результаты по времени.

Этот флаг действителен, только если включен режим разработчика.

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1903
Верхняя часть d3d12umddi.h