DXGKDDI_NOTIFYWORKSUBMISSION Rückruffunktion (d3dkmddi.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.
Die DxgkDdiNotifyWorkSubmission Funktion benachrichtigt KMD, dass UMD neue Arbeit übermittelt hat.
Syntax
DXGKDDI_NOTIFYWORKSUBMISSION DxgkddiNotifyworksubmission;
NTSTATUS DxgkddiNotifyworksubmission(
INOUT_PDXGKARG_NOTIFYWORKSUBMISSION pArgs
)
{...}
Parameter
pArgs
[in] Zeigen Sie auf eine DXGKARG_NOTIFYWORKSUBMISSION Struktur, die die Hardwarewarteschlange identifiziert, an der die Arbeit übermittelt wurde.
Rückgabewert
DxgkDdiNotifyWorkSubmission muss erfolgreich sein und STATUS_SUCCESS zurückgeben.
Bemerkungen
Im Übermittlungsmodell für den Benutzermodus ist KMD nicht an der Übermittlung an der Arbeit beteiligt. Daher ist es in der Regel nicht bekannt, wenn neue Arbeiten in einer Hardwarewarteschlange übermittelt werden. Dieser Faktor ist die Hauptmotivation eines Übermittlungspfads mit geringer Latenz. Es gibt jedoch bestimmte Nischenszenarien und Hardwareeinschränkungen, in denen KMD benachrichtigt werden muss, wenn Arbeit an einer Hardwarewarteschlange ü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 dieses Problem zu lösen, 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 in den Kernel aufruft, indem er D3DKMTNotifyWorkSubmission. Dxgkrnl leitet diesen Aufruf über DxgkDdiNotifyWorkSubmissionan KMD weiter.
DxgkDdiNotifyWorkSubmission- ist ein einfaches Ping von UMD an Dxgkrnl- an KMD, und benachrichtigt, dass neue Arbeit in einer bestimmten Hardwarewarteschlange übermittelt wurde, sodass KMD bestimmte Aktionen initiieren kann, z. B. das Wechseln der 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 soll, kann sie zuerst die Türglocke trennen, indem sie DxgkCbDisconnectDoorbell mit Status D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY aufruft. 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- | d3dkmddi.h |
IRQL- | PASSIVE_LEVEL |