функция обратного вызова 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 |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по