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


функция обратного вызова 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 (include D3dumddi.h)

См. также

D3DDDICB_UPDATEGPUVIRTUALADDRESS

pfnReserveGpuVirtualAddressCb