D3DDDI_MAPGPUVIRTUALADDRESS structure (d3dukmdt.h)
The D3DDDI_MAPGPUVIRTUALADDRESS structure is used with pfnMapGpuVirtualAddressCb to map a GPU virtual address range to a specific allocation range or to put it to the Invalid or Zero state.
Syntax
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;
Members
hPagingQueue
A handle for the device paging queue, used for the operation.
BaseAddress
(Optional) If non-NULL, the video memory manager will attempt to use this address as the base address for the mapping. If the range from BaseAddress to BaseAddress+Size isn’t free, it must belong to a range, previously obtained by calling pfnReserveGpuVirtualAddressCb or pfnMapGpuVirtualAddressCb.
The BaseAddress value is in bytes and must be aligned to CPU page boundary. If NULL is specified, the video memory manager will pick the base address for the allocation within the specified MinimumAddress and MaximumAddress.
MinimumAddress
(Optional) Specifies the minimum GPU virtual address to consider for the mapped range.
The MinimumAddress value is in bytes and must be aligned to 4KB page. This parameter is ignored when BaseAddress != NULL.
MaximumAddress
(Optional) Specifies the maximum GPU virtual address to consider for the mapped range. the video memory manager will guarantee that BaseAddress+Size <= MaximumAddress. If MaximumAddress is set to NULL the video memory manager will not apply any limit.
The MaximumAddress value is in bytes and must be aligned to the 4KB page. This parameter is ignored when BaseAddress != NULL.
hAllocation
Handle to the allocation being mapped into the GPU virtual address space. Must be NULL when Protection.NoAccess or Protection.Zero is specified.
OffsetInPages
Specifies the offset, in 4KB, to the starting page within the specified allocation that must be mapped.
SizeInPages
Specifies the size of the range to map, in 4KB pages.
Protection
A D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE structure that specifies the protection on the GPU virtual address that is mapped.
DriverProtection
Specifies a driver-specific, 64-bit protection value associated with the VA range being allocated. The specified driver protection will be used in call to DxgkDdiUpdatePageTable for page table entries corresponding to this virtual address range.
Reserved0
This member is reserved and should be set to zero.
Reserved1
This member is reserved and should be set to zero.
VirtualAddress
The virtual address assigned to the allocation.
PagingFenceValue
The device paging fence value that the video memory manager signals when the map operation completes on the GPU. The user-mode driver must ensure that this fence is retired or explicitly wait on either the CPU or the GPU on that fence before allowing the GPU to access the mapped range or an unrecoverable fault might occur. A zero fence value might be returned, meaning that the operation is already completed.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 10 |
Minimum supported server | Windows Server 2016 |
Header | d3dukmdt.h (include D3dumddi.h, D3dkmddi.h) |