Функция 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 |