estrutura DXGK_GPUMMUCAPS (d3dkmddi.h)
A estrutura DXGK_GPUMMUCAPS é usada pelo driver do modo kernel para expressar recursos de endereçamento de memória virtual.
Sintaxe
typedef struct _DXGK_GPUMMUCAPS {
union {
struct {
UINT ReadOnlyMemorySupported : 1;
UINT NoExecuteMemorySupported : 1;
UINT ZeroInPteSupported : 1;
UINT ExplicitPageTableInvalidation : 1;
UINT CacheCoherentMemorySupported : 1;
UINT PageTableUpdateRequireAddressSpaceIdle : 1;
UINT LargePageSupported : 1;
UINT DualPteSupported : 1;
UINT AllowNonAlignedLargePageAddress : 1;
UINT SysMem64KBPageSupported : 1;
UINT InvalidTlbEntriesNotCached : 1;
UINT SysMemLargePageSupported : 1;
UINT CachedPageTables : 1;
#if ...
UINT Reserved : 19;
#elif
UINT Reserved : 20;
#elif
UINT Reserved : 21;
#elif
UINT Reserved : 22;
#else
UINT Reserved : 24;
#endif
};
UINT Value;
};
DXGK_PAGETABLEUPDATEMODE PageTableUpdateMode;
UINT VirtualAddressBitCount;
UINT LeafPageTableSizeFor64KPagesInBytes;
UINT PageTableLevelCount;
struct {
UINT SourcePageTableVaInTransfer : 1;
UINT Reserved : 31;
} LegacyBehaviors;
} DXGK_GPUMMUCAPS;
Membros
ReadOnlyMemorySupported
Quando definido como 1, o driver dá suporte à proteção somente leitura em páginas de memória.
NoExecuteMemorySupported
Quando definido como 1, o driver não dá suporte a nenhuma proteção de execução em páginas de memória.
ZeroInPteSupported
Quando definido como 1, a GPU dá suporte ao sinalizador de DXGK_PTE Zero . Isso se aplica a todos os níveis de tabela de página.
ExplicitPageTableInvalidation
Indica que todas as entradas de uma tabela de página ou diretório de página devem ser colocadas em um estado inválido explicitamente, por meio de UpdatePageTable antes de serem liberadas. Por padrão, o gerenciador de memória de vídeo pode liberar uma tabela de páginas, que contém entradas válidas anteriormente, se essas entradas não forem mais necessárias (por exemplo, liberar um grande intervalo de endereços virtuais de GPU, resultando na destruição de tabelas de páginas subjacentes).
Observação
Normalmente, esses sinalizadores são usados por um driver de software que precisa emular a tabela de páginas e precisam controlar as informações por entrada de tabela de página e exigem um par de inicialização/desinit claro para todas as atualizações de entrada de tabela de página.
CacheCoherentMemorySupported
Indica que o driver dá suporte aos bits CacheCoherent na entrada da tabela de páginas e pode fazer a transferência coerente de E/S para a memória do sistema.
PageTableUpdateRequireAddressSpaceIdle
Indica que a GPU não dá suporte à atualização de entradas de tabela de página ou à invalidação do buffer de look-aside de tradução para um espaço de endereço que está atualmente em uso por um mecanismo. Quando esses sinalizadores estiverem definidos, o gerenciador de memória de vídeo garantirá que todo o compartilhamento de contexto do espaço de endereço seja suspenso quando as entradas da tabela de páginas forem modificadas e quando o buffer look-aside de tradução for invalidado.
LargePageSupported
Quando definido como 1, todos os níveis de tabelas de página, exceto o folha um, dão suporte a páginas grandes (bit LargePage em DXGK_PTE).
DualPteSupported
Quando definida como 1, a GPU dá suporte a dois ponteiros para tabelas de páginas na tabela de páginas de nível um (tabela de páginas de 4 KB e tabela de páginas de 64 KB).
AllowNonAlignedLargePageAddress
Quando definido como 1, o Sistema Operacional é capaz de definir o sinalizador LargePage quando o endereço físico da entrada de página grande não está alinhado à cobertura da tabela de página folha. Disponível a partir Windows 10 versão 1607 (WDDM 2.1).
SysMem64KBPageSupported
O driver fornece gerenciamento de segmento de memória a 64 KB. Disponível a partir Windows 10 versão 1607 (WDDM 2.1).
InvalidTlbEntriesNotCached
Quando esse bit for definido, o driver não receberá chamadas para DxgkDdiBuildPagingBuffer para solicitações FlushTlb para intervalos de VA que estão fazendo a transição de um estado inválido para válido. Espera-se que o TLB do hardware não armazene em cache traduções inválidas
Disponível a partir Windows 10 versão 1903 (WDDM 2.6).
SysMemLargePageSupported
O driver fornece suporte de página grande. Disponível a partir do Windows Server 2022 (WDDM 2.9).
CachedPageTables
Há suporte para tabelas de páginas armazenadas em cache. Disponível a partir do WDDM 3.1.
Reserved
Reservado para uso do sistema; não use.
Value
O valor da estrutura da união expresso como um inteiro.
PageTableUpdateMode
Define o tipo de endereços usados em operações DxgkDdiUpdatePageTable . Quando DXGK_PAGETABLEUPDATE_GPU_VIRTUAL estiver definido, toda a operação de paginação ocorrerá no espaço de endereço virtual do contexto do sistema. Quando os diretórios de página estão localizados em um segmento de memória de GPU local, o modo de atualização não pode ser definido como DXGK_PAGETABLEUPDATE_CPU_VIRTUAL.
VirtualAddressBitCount
O número de bits no endereço virtual da GPU.
LeafPageTableSizeFor64KPagesInBytes
O tamanho de uma tabela de página folha quando páginas de 64 KB são usadas. O tamanho deve ser um múltiplo de tamanho de página da CPU (4096).
PageTableLevelCount
O número de níveis de tabela de página com suporte. O valor mínimo é 2 (definido como DXGK_MIN_PAGE_TABLE_LEVEL_COUNT). O valor máximo é DXGK_MAX_PAGE_TABLE_LEVEL_COUNT.
Quando PageTableLevelCount é 2, a tabela de página raiz é dinamicamente redimensionável e o tamanho da tabela de página é determinado por meio de DxgkDdiGetRootPageTableSize. Quando PageTableLevelCount é maior que 2, todos os níveis de tabela de página têm um tamanho fixo, que é descrito por meio de DXGK_PAGE_TABLE_LEVEL_DESC::P ageTableSizeInBytes.
LegacyBehaviors
LegacyBehaviors.SourcePageTableVaInTransfer
Quando definido como 1, o gerenciador de memória de vídeo define o endereço SourcePageTable em TransferVirtual durante a remoção da alocação.
LegacyBehaviors.Reserved
Reservado; não use.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 |
Servidor mínimo com suporte | Windows Server 2016 |
Cabeçalho | d3dkmddi.h (inclua D3dkmddi.h) |