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


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

ОС вызывает DxgkDdiUpdateCurrentValuesFromCpu для обновления CurrentValue пакета собственных ограждений ЦП.

Синтаксис

DXGKDDI_UPDATECURRENTVALUESFROMCPU DxgkddiUpdatecurrentvaluesfromcpu;

NTSTATUS DxgkddiUpdatecurrentvaluesfromcpu(
  IN_CONST_PDXGKARG_UPDATECURRENTVALUESFROMCPU pUpdateCurrentValuesFromCpu
)
{...}

Параметры

pUpdateCurrentValuesFromCpu

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

Комментарии

Этот DDI используется для поддержки существующей семантики API "ограждение сигнала от ЦП". Вместо того, чтобы Dxgkrnl писал новое значение CurrentValue, драйверу предлагается выполнить запись в CurrentValue , чтобы предоставить драйверам возможность вставлять все необходимые синхронизации и барьеры перед записью. ОС синхронизирует обновления на стороне ЦП и гарантирует, что для DxgkDdiUpdateCurrentValuesFromCpu доступно самое актуальное значение. После обновления CurrentValue драйвер должен активировать GPU, чтобы разблокировать аппаратные очереди, ожидающие этого ограждения и разблокированные с обновлением до CurrentValue.

В двух словах драйвер должен следовать следующим шагам:


for i = 1 : NumFences
  1. Insert pre-write memory barrier if required
  2. write new value to CurrentValueCpuVa
  3. trigger GPU to unblock any HwQueues that got unblocked by the updated CurrentValue
end

ОС гарантирует только, что указатель CurrentValueKernelCpuVa действителен в течение всего вызова DDI, а не до или после него. Таким образом, KMD никогда не должен кэшировать этот указатель для использования в другом месте.

Дополнительные сведения о собственных ограждениях GPU см. в разделе Собственные объекты ограждения GPU.

Требования

Требование Значение
Минимальная версия клиента Windows 11, версия 24H2
Верхняя часть d3dkmddi.h
IRQL DISPATCH_LEVEL

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

DXGKARG_UPDATECURRENTVALUESFROMCPU