D3DDDI_RESERVEGPUVIRTUALADDRESS structure (d3dukmdt.h)

The user-mode graphics driver passes D3DDDI_RESERVEGPUVIRTUALADDRESS to the D3D runtime's pfnReserveGpuVirtualAddressCb callback to reserve an address range in the GPU virtual address space of the current process.

Syntax

typedef struct D3DDDI_RESERVEGPUVIRTUALADDRESS {
  union {
    D3DKMT_HANDLE hPagingQueue;
    D3DKMT_HANDLE hAdapter;
  };
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS BaseAddress;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS MinimumAddress;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS MaximumAddress;
  D3DKMT_ALIGN64 D3DGPU_SIZE_T          Size;
  union {
    D3DDDIGPUVIRTUALADDRESS_RESERVATION_TYPE ReservationType;
    UINT                                     Reserved0;
  };
  union {
    D3DKMT_ALIGN64 UINT64 DriverProtection;
    D3DKMT_ALIGN64 UINT64 Reserved1;
  };
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS VirtualAddress;
  union {
    D3DKMT_ALIGN64 UINT64 PagingFenceValue;
    D3DKMT_ALIGN64 UINT64 Reserved2;
  };
} D3DDDI_RESERVEGPUVIRTUALADDRESS;

Members

hPagingQueue

This member is obsolete. Don't use it.

hAdapter

[in] DirectX graphics adapter handle or zero (0). If UMD sets hAdapter set to 0, the D3D runtime will set hAdapter to the kernel's D3DKMT_HANDLE before calling the D3DKMTReserveGpuVirtualAddress kernel interface.

BaseAddress

[in/optional] The number of bytes to reserve in the GPU virtual address space. BaseAddress must be aligned to a 64KB boundary.

If BaseAddress is non-NULL, the video memory manager attempts to use this address as the base address for the reserved range. If the range from BaseAddress to BaseAddress+Size isn’t free, the call fails. When BaseAddress is non-NULL, MinimumAddress and MaximumAddress are ignored.

If NULL is specified the video memory manager picks the base address for the allocation within the specified MinimumAddress and MaximumAddress.

MinimumAddress

[in/optional] The minimum GPU virtual address to consider for the reserved range. MinimumAddress is in bytes and must be aligned to 64KB boundary. It's ignored when BaseAddress is non-NULL.

MaximumAddress

[in/optional] The maximum GPU virtual address to consider for the reserved range. The video memory manager guarantees that BaseAddress+Size <= MaximumAddress. If MaximumAddress is set to NULL the video memory manager will not apply any limit.

MaximumAddress is in bytes and must be aligned to 64KB boundary. It's ignored when BaseAddress is non-NULL.

Size

[in] The size of the range to reserve, in bytes. Must be a multiple of 64KB.

ReservationType

This member is obsolete. Don't use it.

Reserved0

This member is reserved and should be set to zero.

DriverProtection

This member is obsolete. Don't use it.

Reserved1

This member is reserved and should be set to zero.

VirtualAddress

[out] The reserved virtual address.

PagingFenceValue

This member is obsolete. Don't use it.

Reserved2

This member is reserved and should be set to zero.

Requirements

Requirement Value
Minimum supported client Windows 10
Minimum supported server Windows Server 2016
Header d3dukmdt.h (include D3dumddi.h, D3dkmddi.h)

See also

pfnReserveGpuVirtualAddressCb