функция обратного вызова DXGKDDI_NOTIFYWORKSUBMISSION (d3dkmddi.h)

Важно!

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

Функция DxgkDdiNotifyWorkSubmission уведомляет KMD о том, что была отправлена новая работа.

Синтаксис

DXGKDDI_NOTIFYWORKSUBMISSION DxgkddiNotifyworksubmission;

NTSTATUS DxgkddiNotifyworksubmission(
  INOUT_PDXGKARG_NOTIFYWORKSUBMISSION pArgs
)
{...}

Параметры

pArgs

[in] Указатель на структуру DXGKARG_NOTIFYWORKSUBMISSION , которая определяет очередь оборудования, в которую была отправлена работа.

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

DxgkDdiNotifyWorkSubmission должен завершиться успешно и вернуть STATUS_SUCCESS.

Комментарии

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

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

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

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

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

Требования

Требование Значение
Минимальная версия клиента WIN11_FUTURE
Верхняя часть d3dkmddi.h
IRQL PASSIVE_LEVEL

См. также раздел

DXGKARG_NOTIFYWORKSUBMISSION

**DxgkDdiCreateDoorbell

DxgkCbDisconnectDoorbell