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;
Members
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 da BaseAddress a BaseAddress+Size non è gratuito, deve appartenere a un intervallo, ottenuto in precedenza chiamando pfnReserveGpuVirtualAddressCb o pfnMapGpuVirtualAddressCb.
Il valore BaseAddress è espresso in byte e deve essere allineato al limite della pagina della CPU. Se viene specificato NULL, il gestore della memoria video selezionerà l'indirizzo di base per l'allocazione all'interno dell'oggetto MinimumAddress e MaximumAddress specificato.
MinimumAddress
(Facoltativo) Specifica l'indirizzo virtuale GPU minimo da considerare per l'intervallo mappato.
Il valore MinimumAddress è espresso in byte e deve essere allineato a una 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. La gestione memoria video garantisce che BaseAddress+Size<= MaximumAddress. Se MaximumAddress è impostato su NULL, la gestione memoria video non applicherà alcun limite.
Il valore MaximumAddress è espresso in byte e deve essere allineato alla pagina di 4 KB. Questo parametro viene ignorato quando BaseAddress != NULL.
hAllocation
Handle per l'allocazione di cui è stato eseguito il mapping nello spazio di indirizzi virtuali della GPU. Deve essere NULL quando viene specificato 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 isolamento del paging del dispositivo che il gestore della memoria video segnala quando l'operazione di mapping viene completata nella GPU. Il driver in modalità utente deve assicurarsi che questo limite venga ritirato o attendere 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 isolamento zero, vale a dire che l'operazione è già stata completata.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 |
Server minimo supportato | Windows Server 2016 |
Intestazione | d3dukmdt.h (include D3dumddi.h, D3dkmddi.h) |