struttura D3DDDI_MAPGPUVIRTUALADDRESS (d3dukmdt.h)
La struttura D3DDDI_MAPGPUVIRTUALADDRESS viene usata con pfnMapGpuVirtualAddressCb per eseguire il mapping di un intervallo di indirizzi virtuali GPU a un intervallo di allocazione specifico o per inserirlo nello stato non valido o Zero.
Sintassi
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;
Membri
hPagingQueue
Handle per la coda di paging del dispositivo, usata per l'operazione.
BaseAddress
(Facoltativo) Se non NULL, la gestione memoria video tenterà di usare questo indirizzo come indirizzo di base per il mapping. Se l'intervallo compreso tra baseAddressBaseAddress+ Size non è gratuito, deve appartenere a un intervallo, precedentemente ottenuto chiamando pfnReserveGpuVirtualAddressCb o pfnMapGpuVirtualAddressCb.
Il valore baseAddress è in byte e deve essere allineato al limite della pagina della CPU. Se si specifica NULL, la gestione della memoria video selezionerà l'indirizzo di base per l'allocazione all'interno dell' MinimumAddress specificato e MaximumAddress.
MinimumAddress
(Facoltativo) Specifica l'indirizzo virtuale GPU minimo da considerare per l'intervallo mappato.
Il valore MinimumAddress è in byte e deve essere allineato alla pagina di 4 KB. Questo parametro viene ignorato quando BaseAddress != NULL.
MaximumAddress
(Facoltativo) Specifica l'indirizzo virtuale GPU massimo da considerare per l'intervallo mappato. Gestione memoria video garantirà che BaseAddress+Size<= MaximumAddress. Se maximumAddress è impostato su NULL, la gestione della memoria video non applicherà alcun limite.
Il valore maximumAddress è in byte e deve essere allineato alla pagina 4 KB. Questo parametro viene ignorato quando BaseAddress != NULL.
hAllocation
Handle per l'allocazione di cui è stato eseguito il mapping nello spazio indirizzi virtuale gpu. Deve essere NULL quando si specifica Protection.NoAccess o Protection.Zero.
OffsetInPages
Specifica l'offset, in 4 KB, alla pagina iniziale all'interno dell'allocazione specificata di cui è necessario eseguire il mapping.
SizeInPages
Specifica le dimensioni dell'intervallo da mappare, in pagine da 4 KB.
Protection
Struttura D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE che specifica la protezione nell'indirizzo virtuale GPU mappato.
DriverProtection
Specifica un valore di protezione a 64 bit specifico del driver associato all'intervallo va allocato. La protezione del driver specificata verrà usata nella chiamata a DxgkDdiUpdatePageTable per le voci della tabella di pagine corrispondenti a questo intervallo di indirizzi virtuali.
Reserved0
Questo membro è riservato e deve essere impostato su zero.
Reserved1
Questo membro è riservato e deve essere impostato su zero.
VirtualAddress
Indirizzo virtuale assegnato all'allocazione.
PagingFenceValue
Valore di limite di paging del dispositivo che il gestore della memoria video segnala quando l'operazione di mapping viene completata sulla GPU. Il driver in modalità utente deve assicurarsi che questa recinzione venga ritirata o attenda in modo esplicito la CPU o la GPU su tale limite prima di consentire alla GPU di accedere all'intervallo mappato o potrebbe verificarsi un errore irreversibile. Potrebbe essere restituito un valore di recinto zero, vale a dire che l'operazione è già stata completata.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10 |
server minimo supportato | Windows Server 2016 |
intestazione | d3dukmdt.h (include D3dumddi.h, D3dkmddi.h) |