Compartilhar via


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)