estrutura D3DDDI_MAPGPUVIRTUALADDRESS (d3dukmdt.h)
A estrutura D3DDDI_MAPGPUVIRTUALADDRESS é usada com pfnMapGpuVirtualAddressCb para mapear um intervalo de endereços virtuais de GPU para um intervalo de alocação específico ou para colocá-lo no estado Inválido ou Zero .
Sintaxe
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;
Membros
hPagingQueue
Um identificador para a fila de paginação do dispositivo, usado para a operação.
BaseAddress
(Opcional) Se não for NULL, o gerenciador de memória de vídeo tentará usar esse endereço como o endereço base para o mapeamento. Se o intervalo de BaseAddress a BaseAddress+Size não for gratuito, ele deverá pertencer a um intervalo, obtido anteriormente chamando pfnReserveGpuVirtualAddressCb ou pfnMapGpuVirtualAddressCb.
O valor BaseAddress está em bytes e deve ser alinhado ao limite da página da CPU. Se NULL for especificado, o gerenciador de memória de vídeo escolherá o endereço base para a alocação dentro de MinimumAddress e MaximumAddress especificados.
MinimumAddress
(Opcional) Especifica o endereço virtual de GPU mínimo a ser considerado para o intervalo mapeado.
O valor MinimumAddress está em bytes e deve ser alinhado à página 4KB. Esse parâmetro é ignorado quando BaseAddress != NULL.
MaximumAddress
(Opcional) Especifica o endereço virtual máximo de GPU a ser considerado para o intervalo mapeado. o gerenciador de memória de vídeo garantirá que BaseAddress+Size<= MaximumAddress. Se MaximumAddress estiver definido como NULL, o gerenciador de memória de vídeo não aplicará nenhum limite.
O valor MaximumAddress está em bytes e deve ser alinhado à página de 4KB. Esse parâmetro é ignorado quando BaseAddress != NULL.
hAllocation
Manipule para a alocação que está sendo mapeada para o espaço de endereço virtual da GPU. Deve ser NULL quando Protection.NoAccess ou Protection.Zero for especificado.
OffsetInPages
Especifica o deslocamento, em 4KB, para a página inicial dentro da alocação especificada que deve ser mapeada.
SizeInPages
Especifica o tamanho do intervalo a ser mapeado, em páginas de 4KB.
Protection
Uma estrutura D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE que especifica a proteção no endereço virtual de GPU mapeado.
DriverProtection
Especifica um valor de proteção de 64 bits específico do driver associado ao intervalo de VA que está sendo alocado. A proteção de driver especificada será usada na chamada para DxgkDdiUpdatePageTable para entradas de tabela de página correspondentes a esse intervalo de endereços virtuais.
Reserved0
Esse membro é reservado e deve ser definido como zero.
Reserved1
Esse membro é reservado e deve ser definido como zero.
VirtualAddress
O endereço virtual atribuído à alocação.
PagingFenceValue
O valor de cerca de paginação do dispositivo que o gerenciador de memória de vídeo sinaliza quando a operação de mapa é concluída na GPU. O driver de modo de usuário deve garantir que essa cerca seja desativada ou aguardar explicitamente a CPU ou a GPU nessa cerca antes de permitir que a GPU acesse o intervalo mapeado ou uma falha irrecuperável possa ocorrer. Um valor de cerca zero pode ser retornado, o que significa que a operação já está concluída.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 |
Servidor mínimo com suporte | Windows Server 2016 |
Cabeçalho | d3dukmdt.h (inclua D3dumddi.h, D3dkmddi.h) |