структура 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) |