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


структура D3DDDI_MAPGPUVIRTUALADDRESS (d3dukmdt.h)

Структура D3DDDI_MAPGPUVIRTUALADDRESS используется с pfnMapGpuVirtualAddressCb , чтобы сопоставить диапазон виртуальных адресов GPU с определенным диапазоном выделения или поместить его в состояние Invalid или Zero .

Синтаксис

typedef struct D3DDDI_MAPGPUVIRTUALADDRESS {
  D3DKMT_HANDLE                           hPagingQueue;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS   BaseAddress;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS   MinimumAddress;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS   MaximumAddress;
  D3DKMT_HANDLE                           hAllocation;
  D3DKMT_ALIGN64 D3DGPU_SIZE_T            OffsetInPages;
  D3DKMT_ALIGN64 D3DGPU_SIZE_T            SizeInPages;
  D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE Protection;
  D3DKMT_ALIGN64 UINT64                   DriverProtection;
  UINT                                    Reserved0;
  D3DKMT_ALIGN64 UINT64                   Reserved1;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS   VirtualAddress;
  D3DKMT_ALIGN64 UINT64                   PagingFenceValue;
} D3DDDI_MAPGPUVIRTUALADDRESS;

Члены

hPagingQueue

Дескриптор для очереди подкачки устройства, используемый для операции.

BaseAddress

(Необязательно) Если значение не равно NULL, диспетчер видеопамяти попытается использовать этот адрес в качестве базового адреса для сопоставления. Если диапазон от BaseAddress до BaseAddress+Size не является бесплатным, он должен принадлежать диапазону, ранее полученному путем вызова pfnReserveGpuVirtualAddressCb или pfnMapGpuVirtualAddressCb.

Значение BaseAddress содержится в байтах и должно быть выровнено по границе страницы ЦП. Если задано значение NULL, диспетчер видеопамяти выберет базовый адрес для выделения в пределах указанных MinimumAddress и MaximumAddress.

MinimumAddress

(Необязательно) Указывает минимальный виртуальный адрес GPU, который следует учитывать для сопоставленного диапазона.

Значение MinimumAddress содержится в байтах и должно быть выровнено по странице размером 4 КБ. Этот параметр игнорируется, если BaseAddress != NULL.

MaximumAddress

(Необязательно) Указывает максимальный виртуальный адрес GPU, который следует учитывать для сопоставленного диапазона. диспетчер видеопамяти гарантирует, что BaseAddress+Size< = MaximumAddress. Если параметр MaximumAddress имеет значение NULL, диспетчер видеопамяти не будет применять какие-либо ограничения.

Значение MaximumAddress указывается в байтах и должно быть выровнено по странице размером 4 КБ. Этот параметр игнорируется, если BaseAddress != NULL.

hAllocation

Дескриптор выделения, сопоставленного с виртуальным адресным пространством GPU. Значение должно иметь значение NULL, если указан параметр Protection.NoAccess или Protection.Zero .

OffsetInPages

Задает смещение (в 4 КБ) на начальную страницу в пределах указанного выделения, которое необходимо сопоставить.

SizeInPages

Задает размер диапазона для сопоставления в страницах размером 4 КБ.

Protection

Структура D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE , указывающая защиту сопоставленного виртуального адреса GPU.

DriverProtection

Указывает 64-разрядное значение защиты для конкретного драйвера, связанное с выделенным диапазоном va. Указанная защита драйвера будет использоваться при вызове DxgkDdiUpdatePageTable для записей таблицы страниц, соответствующих этому диапазону виртуальных адресов.

Reserved0

Этот элемент зарезервирован и должен иметь нулевое значение.

Reserved1

Этот элемент зарезервирован и должен иметь нулевое значение.

VirtualAddress

Виртуальный адрес, назначенный выделению.

PagingFenceValue

Значение границы разбиения устройства на страницы, которое диспетчер видеопамяти сигнализирует о завершении операции сопоставления на GPU. Драйвер пользовательского режима должен убедиться, что это ограждение снято с учета, или явно ожидать либо ЦП, либо GPU на этом ограждении, прежде чем разрешить GPU доступ к сопоставленным диапазонам, иначе может произойти неустранимая ошибка. Может быть возвращено нулевое значение ограждения, что означает, что операция уже завершена.

Требования

Требование Значение
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Верхняя часть d3dukmdt.h (включая D3dumddi.h, D3dkmddi.h)

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

D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE

D3DKMTMapGpuVirtualAddress

DxgkDdiUpdatePageTable

pfnMapGpuVirtualAddressCb

pfnReserveGpuVirtualAddressCb