Función D3DKMTNotifyWorkSubmission (d3dkmthk.h)
Importante
Cierta 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í.
D3DKMTNotifyWorkSubmission notifica al controlador de pantalla en modo kernel (KMD) que el controlador de pantalla en modo de usuario (UMD) ha enviado el trabajo a la GPU.
Sintaxis
NTSTATUS D3DKMTNotifyWorkSubmission(
D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);
Parámetros
unnamedParam1
Puntero a una estructura de D3DKMT_NOTIFY_WORK_SUBMISSION que identifica la cola de hardware en la que se envió el trabajo.
Valor devuelto
D3DKMTNotifyWorkSubmission devuelve STATUS_SUCCESS si se realiza correctamente al hacer ping a KMD. De lo contrario, devuelve un código de error adecuado, como STATUS_INVALID_PARAMETER si se especifica una cola de hardware o una marca de hardware no válidas.
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 no es consciente de cuándo se envía un nuevo trabajo en un HWQueue. Esta ruta de envío de trabajo de baja latencia es la motivación principal del modelo. Sin embargo, hay ciertos escenarios de nicho y limitaciones de hardware cuando el KMD debe recibir notificaciones cada vez que se envía el trabajo en un HWQueue. 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 da lugar a retrasar la ejecución del trabajo en tiempo real.
Para adaptarse a esta necesidad, KMD puede especificar el estado de conexión del timbre de puerta como D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY en el momento de la creación del timbre. Cada vez que UMD ve este estado de timbre de puerta, ajusta su flujo de trabajo de envío de trabajo de forma que, después de escribir un nuevo comando y llamar al timbre de la puerta, llama al kernel mediante D3DKMTNotifyWorkSubmission. Dxgkrnl reenvía esta llamada a KMD mediante DxgkDdiNotifyWorkSubmission.
D3DKMTNotifyWorkSubmission es un ping simple de UMD a Dxgkrnl a KMD, notificando a este último que se ha enviado un nuevo trabajo en un HWQueue determinado para que KMD pueda iniciar acciones específicas, como cambiar una 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 mediante una llamada a DxgkrnlDxgkCbDisconnectDoorbell con 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 de modo de usuario de baja latencia.
Para obtener más información, vea Envío de trabajo en modo de usuario.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 11, versión 24H2 (WDDM 3.2) |
Encabezado | d3dkmthk.h |