Compartir a través de


DXGKDDI_NOTIFYWORKSUBMISSION función de devolución de llamada (d3dkmddi.h)

Importante

Parte de la información se relaciona con un producto de versión preliminar que puede modificarse sustancialmente antes de su lanzamiento comercial. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.

La función DxgkDdiNotifyWorkSubmission notifica al 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 debe ser correcto y devolver STATUS_SUCCESS.

Comentarios

En el modelo de envío de trabajo en modo de usuario, KMD no participa en el envío de trabajo, por lo que normalmente no es consciente cuando 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 notificaciones 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 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 de lista de ejecución 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 el momento de la creación del timbre. Cada vez que UMD ve este estado de timbre, ajusta su flujo de trabajo de envío de trabajo de forma que después de escribir un nuevo comando y llamar al timbre, llama al kernel mediante D3DKMTNotifyWorkSubmission. Dxgkrnl reenvía esta llamada a KMD a través de DxgkDdiNotifyWorkSubmission.

DxgkDdiNotifyWorkSubmission es un ping simple de UMD a Dxgkrnl a KMD, notificando a este último que se ha enviado un 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 de puerta llamando a DxgkCbDisconnectDoorbell con el estado D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY. Más adelante, cuando UMD intenta volver a conectar el timbre, KMD puede establecer 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 del modo de usuario de baja latencia.

Para obtener más información, consulte Envío de trabajo en modo de usuario.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 11, versión 24H2 (WDDM 3.2)
Encabezado d3dkmddi.h
IRQL PASSIVE_LEVEL

Consulte también

DXGKARG_NOTIFYWORKSUBMISSION

**DxgkDdiCreateDoorbell

DxgkCbDisconnectDoorbell