Freigeben über


D3DKMTNotifyWorkSubmission-Funktion (d3dkmthk.h)

Wichtig

Einige Informationen beziehen sich auf ein Vorabrelease-Produkt, das vor der kommerziellen Freigabe wesentlich geändert werden kann. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.

D3DKMTNotifyWorkSubmission benachrichtigt den Kernelmodusanzeigetreiber (KMD), dass der Benutzermodusanzeigetreiber (UMD) Arbeit an die GPU übermittelt hat.

Syntax

NTSTATUS D3DKMTNotifyWorkSubmission(
  D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);

Parameter

unnamedParam1

Zeiger auf eine D3DKMT_NOTIFY_WORK_SUBMISSION Struktur, die die Hardwarewarteschlange identifiziert, in der die Arbeit übermittelt wurde.

Rückgabewert

D3DKMTNotifyWorkSubmission gibt STATUS_SUCCESS zurück, wenn es erfolgreich ist, KMD zu pingen. Andernfalls wird ein geeigneter Fehlercode zurückgegeben, z. B. STATUS_INVALID_PARAMETER, wenn eine ungültige Hardwarewarteschlange oder ein ungültiges Flag angegeben ist.

Hinweise

Im Benutzermodus-Arbeitsübermittlungsmodell ist KMD nicht an der Arbeitsübermittlung beteiligt und wird daher nicht bemerkt, wenn neue Arbeit in einer HWQueue übermittelt wird. Dieser Arbeitsübermittlungspfad mit geringer Latenz ist die Standard Motivation des Modells. Es gibt jedoch bestimmte Nischenszenarien und Hardwareeinschränkungen, wenn KMD benachrichtigt werden muss, wenn Arbeit in einer HWQueue übermittelt wird. Beispielsweise erfordert ein GPU-Hardwareplaner KMD, um die Hardwarerunlist von normal auf Echtzeit umzustellen, wenn ein Echtzeitkontext Arbeit übermittelt. Wenn KMD nicht an der Arbeitsübermittlung beteiligt ist, kann die Ausführungsliste nicht sofort ausgelöst werden, was zu einer Verzögerung der Arbeitsausführung in Echtzeit führt.

Um diese Anforderung zu erfüllen, kann KMD die Türklingelverbindung status als D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY zum Zeitpunkt der Klingelerstellung angeben. Wenn UMD diese Türklingel status sieht, passt es seinen Arbeitsübermittlungsworkflow so an, dass nach dem Schreiben eines neuen Befehls und dem Klingeln der Türklingel mithilfe von D3DKMTNotifyWorkSubmission in den Kernel aufgerufen wird. Dxgkrnl leitet diesen Aufruf mithilfe von DxgkDdiNotifyWorkSubmission an KMD weiter.

D3DKMTNotifyWorkSubmission ist ein einfacher Ping von UMD zu Dxgkrnl an KMD, der letztere benachrichtigt, dass neue Arbeit für eine bestimmte HWQueue übermittelt wurde, sodass KMD bestimmte Aktionen wie das Wechseln einer Runliste in Echtzeit initiieren kann.

KMD kann auch dynamisch Benachrichtigungen anfordern, nachdem die Türklingel erstellt wurde. Wenn KMD eine Bedingung erkennt, in der sie über die Arbeitsübermittlung in dieser Hardwarewarteschlange benachrichtigt werden soll, kann die Türklingel zunächst getrennt werden, indem dxgkrnlDxgkCbDisconnectDoorbell mit status D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY aufgerufen wird. Später, wenn UMD versucht, die Türklingel wiederherzustellen, kann KMD die Verbindung mit status D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY herstellen.

Treiber sollten diesen Mechanismus in sehr spezifischen und seltenen Szenarien verwenden, da er bei jeder Arbeitsübermittlung einen Roundtrip von UMD zu KMD umfasst. Wenn er für allgemeine Szenarien verwendet wird, wird der Zweck eines Benutzermodus-Übermittlungsmodells mit geringer Latenz verfehlt.

Weitere Informationen finden Sie unter Benutzermodus-Arbeitsübermittlung.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 11, Version 24H2 (WDDM 3.2)
Kopfzeile d3dkmthk.h

Weitere Informationen

D3DKMT_NOTIFY_WORK_SUBMISSION

D3DKMTCreateDoorbell

DxgkCbDisconnectDoorbell

DxgkDdiNotifyWorkSubmission