DXGKDDI_NOTIFYWORKSUBMISSION función de devolución de llamada (d3dkmddi.h)
Importante
Cierta información se relaciona con un producto de versión preliminar que puede modificarse sustancialmente antes de su publicación comercial. Microsoft no ofrece ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.
La función DxgkDdiNotifyWorkSubmission notifica a KMD que UMD ha enviado un nuevo trabajo.
Sintaxis
DXGKDDI_NOTIFYWORKSUBMISSION DxgkddiNotifyworksubmission;
NTSTATUS DxgkddiNotifyworksubmission(
INOUT_PDXGKARG_NOTIFYWORKSUBMISSION pArgs
)
{...}
Parámetros
pArgs
[in] Puntero a una estructura de DXGKARG_NOTIFYWORKSUBMISSION que identifica la cola de hardware en la que se envió el trabajo.
Valor devuelto
dxgkDdiNotifyWorkSubmission deben realizarse correctamente y devolver STATUS_SUCCESS.
Observaciones
En el modelo de envío de trabajo en modo de usuario, KMD no participa en el envío de trabajo y, por lo tanto, no suele ser consciente de cuándo se envía un nuevo trabajo en una cola de hardware. Este factor es la motivación principal de una ruta de envío de trabajo de baja latencia. Sin embargo, hay ciertos escenarios de nicho y limitaciones de hardware en los que el KMD debe recibir una notificación cada vez que se envía el trabajo en una cola de hardware. Por ejemplo, un programador de hardware de GPU requiere KMD para cambiar la lista de ejecución de hardware de normal a en tiempo real cuando un contexto en tiempo real envía el trabajo. Si KMD no está implicado en el envío del trabajo, no puede desencadenar el modificador runlist inmediatamente, lo que produce un retraso en la ejecución del trabajo en tiempo real.
Para solucionar este problema, KMD puede especificar el estado de conexión del timbre como D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY en tiempo de creación del timbre de puerta. Cada vez que UMD ve este estado de timbre, ajusta su flujo de trabajo de envío de trabajo de modo que después de escribir un nuevo comando y llamar al timbre de puerta, llama al kernel mediante D3DKMTNotifyWorkSubmission. Dxgkrnl reenvía esta llamada a KMD a través de DxgkDdiNotifyWorkSubmission.
DxgkDdiNotifyWorkSubmission es un ping sencillo de UMD a Dxgkrnl a KMD, notificando a este último que se ha enviado nuevo trabajo en una cola de hardware determinada, lo que permite a KMD iniciar acciones específicas, como cambiar la lista de ejecución a tiempo real.
KMD también puede solicitar notificaciones dinámicamente después de la creación del timbre. Si KMD detecta una condición en la que se debe notificar el envío de trabajo en esta cola de hardware, primero puede desconectar el timbre llamando a DxgkCbDisconnectDoorbell con estado D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY. Más adelante, cuando UMD intenta volver a conectar el timbre, KMD puede realizar la conexión con el estado D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY.
Los controladores deben usar este mecanismo en escenarios muy específicos e poco frecuentes, ya que implica un recorrido de ida y vuelta de UMD a KMD en cada envío de trabajo y, si se usa para escenarios amplios, derrota el propósito de un modelo de envío de modo de usuario de baja latencia.
Para obtener más información, consulte envío de trabajo en modo de usuario.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 11, versión 24H2 (WDDM 3.2) |
encabezado de | d3dkmddi.h |
irQL | PASSIVE_LEVEL |