структура 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 должно иметь значение 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 (include D3dumddi.h, D3dkmddi.h) |