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, false
andernfalls .
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 |