DXGKDDI_SUSPENDCONTEXT Rückruffunktion (d3dkmddi.h)

Weisen Sie 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 das Zurücksetzen des Moduls durch.

Syntax

DXGKDDI_SUSPENDCONTEXT DxgkddiSuspendcontext;

NTSTATUS DxgkddiSuspendcontext(
  IN_CONST_HANDLE hAdapter,
  IN_CONST_PDXGKARG_SUSPENDCONTEXT pSuspendContext
)
{...}

Parameter

hAdapter

Der Hardwarekontext, der vorzeitig aufgehoben und als angehalten markiert werden soll. Diese Art von Vorbescheidungsanforderung hat keine Nachfrist und wird von der GPU so bald wie möglich berücksichtigt.

pSuspendContext

Zeiger auf eine DXGKARG_SUSPENDCONTEXT-Struktur , die einen monoton ansteigenden Wert pro Kontext enthält, der vom unterbrochenen Interrupt des GPU-Kontexts gemeldet wird, nachdem die Vorbehebungsanforderung abgeschlossen ist. Bis der Zaun signalisiert wird, kann das Betriebssystem nicht davon ausgehen, dass gpu angehalten ist.

Rückgabewert

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 den entsprechenden Member von DXGKARG_SUSPENDCONTEXT festlegen und dann DxgkddiSuspendContext aufrufen.

Auch wenn 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, z. B. wenn es 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 im WDDM 2.4-Planungsmodus kein separater NULL-Kontextschalterbefehl (zuvor durch das ContextSwitch-Flag in DdiSubmitCommandVirtual angegeben) im WDDM 2.4-Planungsmodus vorhanden, da DdiSuspendContext diese Arbeit ausführen soll.

Anforderungen

Anforderung Wert
Header d3dkmddi.h