Поделиться через


Функция D3DKMTNotifyWorkSubmission (d3dkmthk.h)

Важный

Некоторые сведения относятся к предварительному продукту, который может быть существенно изменен до его коммерческого выпуска. Корпорация Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых в отношении информации, предоставленной здесь.

D3DKMTNotifyWorkSubmission уведомляет драйвер отображения в режиме ядра (KMD), что драйвер отображения пользовательского режима (UMD) отправил работу в GPU.

Синтаксис

NTSTATUS D3DKMTNotifyWorkSubmission(
  D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);

Параметры

unnamedParam1

Указатель на структуру D3DKMT_NOTIFY_WORK_SUBMISSION, которая определяет очередь оборудования, в которой была отправлена работа.

Возвращаемое значение

D3DKMTNotifyWorkSubmission возвращает STATUS_SUCCESS, если он успешно выполняется при подключении KMD. В противном случае возвращается соответствующий код ошибки, например STATUS_INVALID_PARAMETER, если указана недопустимая очередь оборудования или флаг.

Замечания

В модели рабочей отправки в режиме пользователя KMD не участвует в отправке рабочих данных и поэтому не знает, когда новая работа отправляется на HWQueue. Этот путь отправки с низкой задержкой является основной мотивацией модели. Однако существуют определенные нишевые сценарии и ограничения оборудования, когда KMD необходимо получать уведомления при отправке работы на HWQueue. Например, планировщик оборудования GPU требует KMD для переключения списка запусков оборудования из обычного в режим реального времени при отправке контекста реального времени. Если KMD не участвует в рабочей отправке, он не может немедленно активировать переключатель списка выполнения, что приводит к задержке выполнения работы в режиме реального времени.

Для удовлетворения этой необходимости KMD может указать состояние подключения к двери как D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY при времени создания двери. Когда UMD видит это состояние двери, он настраивает рабочий рабочий процесс отправки таким образом, что после написания новой команды и вызова двери, он вызывает в ядро с помощью D3DKMTNotifyWorkSubmission. Dxgkrnl перенаправляет этот вызов в KMD с помощью DxgkDdiNotifyWorkSubmission.

D3DKMTNotifyWorkSubmission — это простая связь из UMD в Dxgkrnl к KMD, уведомляя последнего о том, что новая работа была отправлена на определенный HWQueue, чтобы KMD мог инициировать определенные действия, такие как переключение списка запуска в режим реального времени.

KMD также может динамически запрашивать уведомление после создания двери. Если KMD обнаруживает условие, в котором оно должно быть уведомлено о отправке работы в этой очереди оборудования, то сначала он может отключить дверь, вызвав DxgkrnlDxgkCbDisconnectDoorbell с состоянием D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY. Позже, когда UMD пытается повторно подключить дверь, KMD может сделать подключение с состоянием D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY.

Драйверы должны использовать этот механизм в очень конкретных и редких сценариях, так как он включает в себя круговую поездку от UMD до KMD на каждую рабочую отправку, и если она используется для широких сценариев, то она побеждает цель модели отправки в режиме пользователя с низкой задержкой.

Дополнительные сведения см. в рабочей отправки в режиме пользователя.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 11 версии 24H2 (WDDM 3.2)
заголовка d3dkmthk.h

См. также

D3DKMT_NOTIFY_WORK_SUBMISSION

D3DKMTCreateDoorbell

DxgkCbDisconnectDoorbell

DxgkDdiNotifyWorkSubmission