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

pfnUpdateGpuVirtualAddressCb — это специальная операция, используемая в контексте ресурсов плитки. Это позволяет драйверу пользовательского режима указать ряд операций сопоставления, применяемых к виртуальному диапазону адресов процесса в одном пакете обновлений таблицы страниц.

Диапазон виртуальных адресов графического блока обработки (GPU) во всех операциях (за исключением исходного адреса операций копирования) должен относиться к одному диапазону виртуальных адресов, полученному путем вызова pfnReserveGpuVirtualAddressCb. Аналогичным образом диапазоны виртуальных адресов всех источников в операциях копирования должны принадлежать одному диапазону виртуальных адресов, который был получен путем вызова pfnReserveGpuVirtualAddressCb.

Обновления таблицы страниц выполняются в контексте подкачки, выделенном для указанного контекста отрисовки, и выполняются на GPU только после того, как связанный контекст отрисовки сигнализирует FenceValue для указанного отслеживаемого объекта ограждения. После завершения обновления таблицы страниц контекст разбиения на страницы передает отслеживаемой объекту ограждения значение FenceValue+1, позволяя контексту отрисовки выполнять тесную блокировку с обновлениями таблицы страницы.

Синтаксис

PFND3DDDI_UPDATEGPUVIRTUALADDRESSCB Pfnd3dddiUpdategpuvirtualaddresscb;

HRESULT Pfnd3dddiUpdategpuvirtualaddresscb(
  HANDLE hDevice,
  const D3DDDICB_UPDATEGPUVIRTUALADDRESS *unnamedParam2
)
{...}

Параметры

hDevice

Дескриптор устройства отображения.

unnamedParam2

pData [in]

Указатель на структуру D3DDDICB_UPDATEGPUVIRTUALADDRESS , описывающую выполняемую операцию.

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

Если эта функция обратного вызова выполнена успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Диапазоны виртуальных адресов в операциях обновления могут пересекаться. Операции будут применяться в порядке отправки.

В одном вызове pfnUpdateVirtualAddressCb :

  • Все диапазоны виртуальных адресов в операциях сопоставления и конечный диапазон в операциях копирования должны принадлежать к одному и тому же зарезервированному (нулевому) диапазону.
  • Исходный диапазон виртуальных адресов в операциях копирования может находиться из другого зарезервированного (нулевого) диапазона.
  • Исходный диапазон виртуальных адресов во всех операциях копирования должен принадлежать к одному и тому же зарезервированному (нулевому) диапазону.
Драйвер пользовательского режима может отправлять множество вызовов pfnUpdateGpuVirtualAddressCb , и операции будут помещены в очередь за забором отрисовки. Если количество операций обновления в очереди превышает 128, вызывающий поток будет заблокирован до тех пор, пока диспетчер видеопамяти не обработает предыдущие операции.

Требования

Требование Значение
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Целевая платформа Персональный компьютер
Верхняя часть d3dumddi.h (включая D3dumddi.h)

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

D3DDDICB_UPDATEGPUVIRTUALADDRESS

pfnReserveGpuVirtualAddressCb