Share via


ID3D12Device6::SetBackgroundProcessingMode-Methode (d3d12.h)

Legt den Modus für Treiber-Hintergrundverarbeitungsoptimierungen fest.

Syntax

HRESULT SetBackgroundProcessingMode(
  [in]  D3D12_BACKGROUND_PROCESSING_MODE Mode,
  [in]  D3D12_MEASUREMENTS_ACTION        MeasurementsAction,
  [in]  HANDLE                           hEventToSignalUponCompletion,
  [out] BOOL                             *pbFurtherMeasurementsDesired
);

Parameter

[in] Mode

Typ: D3D12_BACKGROUND_PROCESSING_MODE

Die Ebene der dynamischen Optimierung, die auf GPU-Arbeit angewendet werden soll, die anschließend übermittelt wird.

[in] MeasurementsAction

Typ: D3D12_MEASUREMENTS_ACTION

Die Aktion, die mit den Ergebnissen der früheren Workloadinstrumentation durchgeführt werden soll.

[in] hEventToSignalUponCompletion

Typ: HANDLE

Ein optionaler Handle, der signalisiert, wenn die Funktion abgeschlossen ist. Wenn beispielsweise MeasurementsAction auf D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS festgelegt ist, wird hEventToSignalUponCompletion signalisiert, wenn alle resultierenden Kompilierungen abgeschlossen sind.

[out] pbFurtherMeasurementsDesired

Typ: BOOL*

Ein optionaler Zeiger auf einen booleschen Wert. Die Funktion legt den Wert auf fest true , um anzugeben, dass Sie die Profilerstellung fortsetzen sollten, falseandernfalls .

Hinweise

Ein Grafiktreiber kann CPU-Hintergrundthreads mit Leerlaufpriorität verwenden, um Shaderprogramme dynamisch neu zu kompilieren. Dies kann die GPU-Leistung verbessern, indem Shadercode spezialisiert wird, um Details der Hardware, auf der er ausgeführt wird, und/oder dem Kontext, in dem er verwendet wird, besser abzugleichen.

Als Entwickler müssen Sie nichts tun, um von diesem Feature zu profitieren (im Laufe der Zeit werden vorhandene Shader automatisch effizienter optimiert, wenn Treiber Hintergrundverarbeitungsoptimierungen übernehmen). Wenn Sie jedoch die Profilerstellung für Ihren Code durchführen, sollten Sie wahrscheinlich SetBackgroundProcessingMode aufrufen, um sicherzustellen, dass alle Optimierungen der Treiberhintergrundverarbeitung durchgeführt wurden, bevor Sie Timingmessungen durchführen. Hier sehen Sie ein Beispiel.

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 verwendet automatisch SetBackgroundProcessingMode – zunächst zum Primen des Systems und dann, um zu verhindern, dass in der Mitte der Analyse weitere Änderungen vorgenommen werden. PIX wartet auf ein Ereignis (um sicherzustellen, dass alle Hintergrund-Shader-Neukompilierungen abgeschlossen sind), bevor messungen durchgeführt werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10 Build 20348
Unterstützte Mindestversion (Server) Windows 10 Build 20348
Zielplattform Windows
Kopfzeile d3d12.h
Bibliothek d3d12.lib
DLL d3d12.dll