D3DKMTUpdateGpuVirtualAddress function (d3dkmthk.h)

D3DKMTUpdateGpuVirtualAddress is a special operation used in the context of tile resources. It allows the driver to specify a number of mapping operations to be applied to the process virtual address space in a single batch of page table updates.

Syntax

NTSTATUS D3DKMTUpdateGpuVirtualAddress(
  [in] const D3DKMT_UPDATEGPUVIRTUALADDRESS *unnamedParam1
);

Parameters

[in] unnamedParam1

A pointer to a D3DKMT_UPDATEGPUVIRTUALADDRESS structure that describes the operation.

Return value

Return code Description
STATUS_SUCCESS The device context was successfully created.
STATUS_INVALID_PARAMETER Parameters were validated and determined to be incorrect.

This function might also return other NTSTATUS values.

Remarks

The range of graphics processing unit (GPU) virtual addresses in all operations (except the source of the copy operations) must belong to a single virtual address range which was obtained by calling ReserveGpuVirtualAddressRange. Similarly, the virtual address ranges of all sources in copy operations must belong to a single virtual address range, which was obtained by calling ReserveGpuVirtualAddressRange.

The page table updates are executed on a paging context, dedicated to the rendering context specified, and executed on the GPU only after the associated rendering context signaled FenceValue for the specified monitored fence object. When the page table updates are finished, the paging context signals the monitored fence object to FenceValue+1, allowing the rendering context to do tight interlocking with the page table updates.

The virtual address ranges in the update operations are allowed to intersect. The operations will be applied in the order they are submitted.

In a single UpdateVirtualAddress call:

  • All virtual address ranges in mapping operations and the destination range in copy operations must belong to the same reserved (zero) range.
  • The source virtual address range in copy operations is allowed to be from a different reserved (zero) range.
  • The source virtual address range in all copy operations must belong to the same reserved (zero) range.

Drivers can submit many UpdateGpuVirtualAddress calls, which will be queued behind the rendering fence. When the number of queued update operations exceeds 128, the calling thread will be blocked until the previous operations are processed by the video memory manager.

Requirements

Requirement Value
Minimum supported client Windows 10
Minimum supported server Windows Server 2016
Target Platform Universal
Header d3dkmthk.h (include D3dkmthk.h)
Library Gdi32.lib
DLL Gdi32.dll

See also

D3DKMT_UPDATEGPUVIRTUALADDRESS

ReserveGpuVirtualAddressRange