DXGKDDI_NOTIFYWORKSUBMISSION Rückruffunktion (d3dkmddi.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.
Die DxgkDdiNotifyWorkSubmission-Funktion benachrichtigt KMD, dass UMD neue Arbeit übermittelt hat.
Syntax
DXGKDDI_NOTIFYWORKSUBMISSION DxgkddiNotifyworksubmission;
NTSTATUS DxgkddiNotifyworksubmission(
INOUT_PDXGKARG_NOTIFYWORKSUBMISSION pArgs
)
{...}
Parameter
pArgs
[in] Zeiger auf eine DXGKARG_NOTIFYWORKSUBMISSION Struktur, die die Hardwarewarteschlange identifiziert, in der die Arbeit übermittelt wurde.
Rückgabewert
DxgkDdiNotifyWorkSubmission muss erfolgreich sein und STATUS_SUCCESS zurückgeben.
Hinweise
Im Benutzermodus-Arbeitsübermittlungsmodell ist KMD nicht an der Arbeitsübermittlung beteiligt und ist daher in der Regel nicht bekannt, wenn neue Arbeit in einer Hardwarewarteschlange übermittelt wird. Dieser Faktor ist die Standard Motivation eines Arbeitsübermittlungspfads mit geringer Latenz. Es gibt jedoch bestimmte Nischenszenarien und Hardwarebeschränkungen, in denen KMD benachrichtigt werden muss, wenn Arbeit in einer Hardwarewarteschlange übermittelt wird. Ein GPU-Hardwareplaner erfordert beispielsweise KMD, um die Hardwarerunlist von normal in Echtzeit zu ändern, wenn ein Echtzeitkontext die Arbeit übermittelt. Wenn KMD nicht an der Arbeitsübermittlung beteiligt ist, kann die Ausführungsliste nicht sofort ausgelöst werden, was dazu führt, dass die Ausführung der Arbeit in Echtzeit verzögert wird.
Um dieses Problem zu lösen, 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 über DxgkDdiNotifyWorkSubmission an KMD weiter.
DxgkDdiNotifyWorkSubmission ist ein einfacher Ping von UMD zu Dxgkrnl an KMD, der letztere benachrichtigt, dass neue Arbeit für eine bestimmte Hardwarewarteschlange übermittelt wurde, sodass KMD bestimmte Aktionen wie das Wechseln der 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 dxgkCbDisconnectDoorbell 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 | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |