Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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í.
D3DKMTNotifyWorkSubmission notifica al controlador de pantalla en modo kernel (KMD) que el controlador de pantalla en modo de usuario (UMD) ha enviado trabajo a la GPU.
Sintaxis
NTSTATUS D3DKMTNotifyWorkSubmission(
D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);
Parámetros
unnamedParam1
Puntero a una estructura 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 no válidas.
Observaciones
En el modelo de envío de trabajo en modo de usuario, KMD no participa en el envío de trabajo y, por tanto, 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 una notificación 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 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 satisfacer esta necesidad, KMD puede especificar el estado de conexión del timbre como D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY en tiempo de creación del timbre. 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 mediante DxgkDdiNotifyWorkSubmission.
D3DKMTNotifyWorkSubmission es un ping sencillo de UMD a Dxgkrnl a KMD, notificando a este último que se ha enviado 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 llamando a Dxgkrnl's 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 | d3dkmthk.h |