функция обратного вызова DXGKDDI_NOTIFYWORKSUBMISSION (d3dkmddi.h)
Важно!
Некоторые сведения относятся к предварительной версии продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Функция DxgkDdiNotifyWorkSubmission уведомляет KMD о том, что UMD отправила новую работу.
Синтаксис
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 при каждой отправке работы, а если он используется для широких сценариев, то он не соответствует цели модели отправки в пользовательском режиме с низкой задержкой.
Дополнительные сведения см. в разделе Рабочая отправка в пользовательском режиме.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 11, версия 24H2 (WDDM 3.2) |
Верхняя часть | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |