DXGKDDI_SUSPENDCONTEXT Rückruffunktion (d3dkmddi.h)
DxgkddiSuspendContext weist die GPU an, einen Kontext anzusetzen. Wenn die GPU den Abschluss des Anhaltens innerhalb des TDR-Timeouts (Timeouterkennung und Wiederherstellung) nicht bestätigt, erkennt das Betriebssystem das Engine-Timeout und führt eine Engine-Zurücksetzung durch.
Syntax
DXGKDDI_SUSPENDCONTEXT DxgkddiSuspendcontext;
NTSTATUS DxgkddiSuspendcontext(
IN_CONST_HANDLE hAdapter,
IN_CONST_PDXGKARG_SUSPENDCONTEXT pSuspendContext
)
{...}
Parameter
hAdapter
[in] Der Hardwarekontext, der vorzeitig aufgehoben und als angehalten markiert werden soll. Diese Art von Vorbescheidungsanforderung hat keine Nachfrist und wird von der GPU voraussichtlich so bald wie möglich berücksichtigt.
pSuspendContext
[in] Zeiger auf eine DXGKARG_SUSPENDCONTEXT-Struktur , die zusätzliche Argumente für diese Funktion enthält.
Rückgabewert
DxgkddiSuspendContext gibt STATUS_SUCCESS zurück, wenn der Kontext zum Zeitpunkt dieses Aufrufs bereits angehalten ist. Andernfalls wird dieser Wert auf STATUS_PENDING festgelegt, und der Angehaltene Vorgang wird beendet, wenn contextSuspendFence über einen Interrupt signalisiert wird.
Hinweise
Registrieren Sie Ihre Implementierung dieser Rückruffunktion, indem Sie sie in DRIVER_INITIALIZATION_DATA festlegen.
Obwohl die Roundrobin-Vorbescheidung von der GPU initiiert werden kann, benötigt das Betriebssystem immer noch eine Möglichkeit, den Kontext aus anderen Gründen zu ersetzen. Beispielsweise, wenn er seine Zuordnungen verschieben oder einen GPU-Energieübergang durchführen muss.
Der Wert für das Ansetzen des Kontexts ist erforderlich, um Fälle zu behandeln, in dem das Betriebssystem einen Kontext ansetzt, nicht auf die Bestätigung des Anhaltens wartet und einen Kontext erneut ansetzt. Der Suspendierungswert ermöglicht es dem Betriebssystem, zwischen der vorherigen Und der letzten Bestätigung für das Anhalten zu unterscheiden.
Sobald ein Kontext angehalten wurde, wird davon ausgegangen, dass alle Verweise auf ihn von der GPU entfernt werden, und das Betriebssystem kann den Kontext zerstören oder seinen Arbeitsspeicher verschieben. Im Gegensatz zu WDDM 2.3 oder früher ist kein separater NULL-Kontextwechselbefehl (zuvor durch das ContextSwitch-Flag in DxgkDdiSubmitCommandVirtual angegeben) im WDDM 2.4-Planungsmodus vorhanden, da DxgkddiSuspendContext diese Arbeit ausführen soll.
Anforderungen
Anforderung | Wert |
---|---|
Header | d3dkmddi.h |