Freigeben über


D3DKMTNotifyWorkSubmission-Funktion (d3dkmthk.h)

Wichtig

Einige Informationen beziehen sich auf ein Vorabversionsprodukt, das vor der kommerziellen Veröffentlichung erheblich geändert werden kann. Microsoft übernimmt keine Gewährleistungen, ausdrücklich oder konkludent in Bezug auf die hier bereitgestellten Informationen.

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

Syntax

NTSTATUS D3DKMTNotifyWorkSubmission(
  D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);

Parameter

unnamedParam1

Zeigen Sie auf eine D3DKMT_NOTIFY_WORK_SUBMISSION Struktur, die die Hardwarewarteschlange identifiziert, an der die Arbeit übermittelt wurde.

Rückgabewert

D3DKMTNotifyWorkSubmission gibt STATUS_SUCCESS zurück, wenn der Ping-KMD erfolgreich ist. Andernfalls wird ein entsprechender Fehlercode wie STATUS_INVALID_PARAMETER zurückgegeben, wenn eine ungültige Hardwarewarteschlange oder ein Ungültiges Flag angegeben ist.

Bemerkungen

In der Benutzermodus-Übermittlung Modell ist KMD nicht an der Übermittlung an die Arbeit beteiligt. Daher ist es nicht bekannt, wenn neue Arbeiten an einer HWQueue übermittelt werden. Dieser Pfad für die Übermittlung von Arbeitsaufgaben mit geringer Latenz ist die Hauptmotivation des Modells. Es gibt jedoch bestimmte Nischenszenarien und Hardwareeinschränkungen, wenn KMD benachrichtigt werden muss, wenn Arbeit an einer HWQueue übermittelt wird. Ein GPU-Hardwareplaner erfordert z. B. KMD, um die Hardwareausführungsliste von normal in Echtzeit zu wechseln, wenn ein Echtzeitkontext arbeite. Wenn KMD nicht an der Arbeitsübermittlung beteiligt ist, kann sie den Runlist-Switch nicht sofort auslösen, was dazu führt, dass die Ausführung der Arbeit in Echtzeit verzögert wird.

Um diesen Bedarf zu erfüllen, kann KMD den Verbindungsstatus der Türglocke als D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY bei Türglockenerstellungszeitangeben. Immer wenn UMD diesen Doorbell-Status sieht, passt es seinen Arbeitsübermittlungsworkflow so an, dass er nach dem Schreiben eines neuen Befehls und klingelt die Türglocke mithilfe D3DKMTNotifyWorkSubmissionan den Kernel aufruft. Dxgkrnl leitet diesen Aufruf mithilfe DxgkDdiNotifyWorkSubmission-an KMD weiter.

D3DKMTNotifyWorkSubmission- ist ein einfaches Ping von UMD zu Dxgkrnl- an KMD, und benachrichtigt diesen darüber, dass neue Arbeiten an einem bestimmten HWQueue übermittelt wurden, sodass KMD bestimmte Aktionen initiieren kann, z. B. das Wechseln einer Runlist in Echtzeit.

KMD kann auch eine Benachrichtigung dynamisch nach der Erstellung von Doorbell anfordern. Wenn KMD eine Bedingung erkennt, in der sie über die Arbeitsübermittlung in dieser Hardwarewarteschlange benachrichtigt werden sollte, kann sie zuerst die Türglocke trennen, indem sie Dxgkrnl's DxgkCbDisconnectDoorbell mit Status D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY. Wenn UMD später versucht, die Türglocke wieder herzustellen, kann KMD die Verbindung mit status D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY herstellen.

Treiber sollten diesen Mechanismus in sehr spezifischen und seltenen Szenarien verwenden, da es einen Roundtrip von UMD zu KMD für jede Arbeitsübermittlung beinhaltet und wenn er für allgemeine Szenarien verwendet wird, wird der Zweck eines Übermittlungsmodells für den Benutzermodus mit geringer Latenz besiegt.

Weitere Informationen finden Sie unter Arbeitsübermittlung im Benutzermodus.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 11, Version 24H2 (WDDM 3.2)
Header- d3dkmthk.h

Siehe auch

D3DKMT_NOTIFY_WORK_SUBMISSION

D3DKMTCreateDoorbell

DxgkCbDisconnectDoorbell

DxgkDdiNotifyWorkSubmission