D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION struttura (d3dukmdt.h)

D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION descrive un'operazione di aggiornamento degli indirizzi virtuali.

Sintassi

typedef struct _D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION {
  D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION_TYPE OperationType;
  union {
    struct {
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS BaseAddress;
      D3DKMT_ALIGN64 D3DGPU_SIZE_T          SizeInBytes;
      D3DKMT_HANDLE                         hAllocation;
      D3DKMT_ALIGN64 D3DGPU_SIZE_T          AllocationOffsetInBytes;
      D3DKMT_ALIGN64 D3DGPU_SIZE_T          AllocationSizeInBytes;
    } Map;
    struct {
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS   BaseAddress;
      D3DKMT_ALIGN64 D3DGPU_SIZE_T            SizeInBytes;
      D3DKMT_HANDLE                           hAllocation;
      D3DKMT_ALIGN64 D3DGPU_SIZE_T            AllocationOffsetInBytes;
      D3DKMT_ALIGN64 D3DGPU_SIZE_T            AllocationSizeInBytes;
      D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE Protection;
      D3DKMT_ALIGN64 UINT64                   DriverProtection;
    } MapProtect;
    struct {
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS   BaseAddress;
      D3DKMT_ALIGN64 D3DGPU_SIZE_T            SizeInBytes;
      D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE Protection;
    } Unmap;
    struct {
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS SourceAddress;
      D3DKMT_ALIGN64 D3DGPU_SIZE_T          SizeInBytes;
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS DestAddress;
    } Copy;
  };
} D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION;

Members

OperationType

Map

Esegue il mapping dell'intervallo di indirizzi virtuale specificato all'intervallo di allocazione specificato. L'allocazione non deve essere residente al momento dell'invio o al momento del mapping. La protezione di lettura-scrittura è impostata sulle pagine. DriverProtection per le pagine è impostato su zero.

Map.BaseAddress

Specifica baseAddress dell'intervallo di indirizzi virtuali GPU da aggiornare. Il valore è in byte e deve essere allineato a 4 KB.

L'intero intervallo compreso tra BaseAddress e BaseAddressSizeInBytes deve trovarsi nello stato riservato (zero) o mappato oppure l'operazione pfnUpdateGpuVirtualAddressCb+ avrà esito negativo. Gli intervalli di indirizzi virtuali per tutte le operazioni devono appartenere a un intervallo di indirizzi virtuale riservato dalla stessa chiamata pfnReserveGpuVirtualAddressCb .

Map.SizeInBytes

Specifica le dimensioni, in byte, per l'intervallo da aggiornare. Il valore deve essere allineato a 4 KB.

Map.hAllocation

Specifica l'allocazione a cui deve essere eseguito il mapping dell'intervallo.

Map.AllocationOffsetInBytes

Specifica l'offset, in byte, alla prima pagina dell'allocazione per eseguire il mapping. Il valore deve essere allineato a 4 KB.

Map.AllocationSizeInBytes

Specifica le dimensioni dell'intervallo di allocazione da mappare in byte. Il valore deve essere allineato a 4 KB e deve essere minore di Map.SizeInBytes. Se questo valore è zero, viene usato Map.SizeInBytes .

Quando questo valore è diverso da Map.SizeInBytes, Map.SizeInBytes deve essere un multiplo. In questo caso Gli intervalli di indirizzi virtuali Map.SizeInBytes Map.AllocationSizeInBytes/ verranno mappati allo stesso intervallo di allocazione.

MapProtect

Esegue il mapping dell'intervallo di indirizzi virtuale specificato all'intervallo di allocazione specificato. L'allocazione non deve essere residente al momento dell'invio o al momento del mapping. La protezione della pagina viene specificata nell'operazione.

MapProtect.BaseAddress

Specifica baseAddress dell'intervallo di indirizzi virtuali GPU da aggiornare. Il valore è in byte e deve essere allineato a 4 KB.

L'intero intervallo compreso tra BaseAddress e BaseAddressSizeInBytes deve trovarsi nello stato riservato (zero) o mappato o pfnUpdateGpuVirtualAddressCb+ avrà esito negativo. Gli intervalli di indirizzi virtuali per tutte le operazioni devono appartenere a un intervallo di indirizzi virtuale riservato dalla stessa chiamata pfnReserveGpuVirtualAddressCb .

MapProtect.SizeInBytes

Specifica le dimensioni, in byte, per l'intervallo da aggiornare. Il valore deve essere allineato a 4 KB.

MapProtect.hAllocation

Specifica l'allocazione a cui deve essere eseguito il mapping dell'intervallo.

MapProtect.AllocationOffsetInBytes

Specifica l'offset, in byte, alla prima pagina dell'allocazione per eseguire il mapping. Il valore deve essere allineato a 4 KB.

MapProtect.AllocationSizeInBytes

Specifica le dimensioni dell'intervallo di allocazione da mappare in byte. Il valore deve essere allineato a 4 KB e deve essere minore di Map. SizeInBytes. Se questo valore è zero, viene usato Map.SizeInBytes .

Quando questo valore è minore di Map.SizeInBytes, Map.SizeInBytes deve essere un multiplo. In questo caso Gli intervalli di indirizzi virtuali Map.SizeInBytes Map.AllocationSizeInBytes/ verranno mappati allo stesso intervallo di allocazione.

MapProtect.Protection

Specifica la protezione definita dall'API per le pagine.

MapProtect.DriverProtection

Specifica la protezione specifica del driver per le pagine.

Unmap

Inserisce l'intervallo di indirizzi virtuale specificato sullo stato zero o sullo stato non valido .

Unmap.BaseAddress

Specifica baseAddress dell'intervallo di indirizzi virtuali GPU da inserire nello stato zero . Il valore è in byte e deve essere allineato a 4 KB.

Unmap.SizeInBytes

Specifica le dimensioni, in byte, per liberare l'intervallo. Il valore deve essere allineato a 4 KB.

Unmap.Protection

Definisce lo stato della voce della tabella di pagina dopo il mapping, Zero o NoAccess.

Copy

L'operazione di copia copia tutti i mapping dall'intervallo di indirizzi virtuali GPU di origine all'intervallo di destinazione. Gli intervalli di origine e di destinazione possono intersecarsi. Entrambi gli intervalli devono appartenere a un intervallo di indirizzi virtuali riservato (zero).

BaseAddress

Specifica l'indirizzo virtuale iniziale dell'intervallo di indirizzi virtuali di origine. Il valore è in byte e deve essere allineato a 4 KB.

Copy.SourceAddress

Copy.SizeInBytes

Specifica le dimensioni, in byte, per l'intervallo copiato. Il valore deve essere allineato a 4 KB.

Copy.DestAddress

Specifica l'indirizzo virtuale iniziale dell'intervallo di indirizzi virtuali di destinazione. Il valore è in byte e deve essere allineato a 4 KB.

Requisiti

Requisito Valore
Client minimo supportato Windows 10
Server minimo supportato Windows Server 2016
Intestazione d3dukmdt.h (include D3dumddi.h, D3dkmddi.h)

Vedi anche

pfnReserveGpuVirtualAddressCb

pfnUpdateGpuVirtualAddressCb