Compartir a través de


estructura DXGK_GPUMMUCAPS (d3dkmddi.h)

El controlador en modo kernel usa la estructura DXGK_GPUMMUCAPS para expresar las funcionalidades de direccionamiento de memoria virtual.

Sintaxis

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;

Miembros

ReadOnlyMemorySupported

Cuando se establece en 1, el controlador admite la protección de solo lectura en páginas de memoria.

NoExecuteMemorySupported

Cuando se establece en 1, el controlador no admite ninguna protección de ejecución en páginas de memoria.

ZeroInPteSupported

Cuando se establece en 1, la GPU admite la marca Zero DXGK_PTE . Esto se aplica a todos los niveles de tabla de páginas.

ExplicitPageTableInvalidation

Indica que todas las entradas de una tabla de páginas o un directorio de página deben colocarse explícitamente en un estado no válido, a través de UpdatePageTable antes de liberarse. De forma predeterminada, el administrador de memoria de vídeo puede liberar una tabla de páginas, que contiene entradas válidas anteriormente, si estas entradas ya no son necesarias (por ejemplo, liberar un intervalo de direcciones virtuales de GPU grande, lo que da lugar a la destrucción de tablas de páginas subyacentes).

Nota

Normalmente, este indicador lo usa un controlador de software que necesita emular la tabla de páginas y debe realizar un seguimiento de la información sobre una entrada de tabla por página y requerir un par init/deinit claro para todas las actualizaciones de entrada de tabla de páginas.

CacheCoherentMemorySupported

Indica que el controlador admite los bits CacheCoherent de la entrada de la tabla de páginas y puede realizar una transferencia coherente de E/S a la memoria del sistema.

PageTableUpdateRequireAddressSpaceIdle

Indica que la GPU no admite la actualización de entradas de tabla de páginas ni invalidación del búfer de búsqueda de traducción para un espacio de direcciones que está actualmente en uso por un motor. Cuando se establece esta marca, el administrador de memoria de vídeo garantizará que todo el contexto que comparte el espacio de direcciones se suspenda cuando se modifiquen sus entradas de tabla de páginas y cuando se invalide el búfer de búsqueda de reserva de traducción.

LargePageSupported

Cuando se establece en 1, todos los niveles de tablas de páginas, excepto la hoja uno, admiten páginas grandes (bit LargePage en DXGK_PTE).

DualPteSupported

Cuando se establece en 1, la GPU admite dos punteros a tablas de páginas en el nivel uno tabla de páginas (tabla de páginas de 4 KB y tabla de páginas de 64 KB).

AllowNonAlignedLargePageAddress

Cuando se establece en 1, el sistema operativo puede establecer la marca LargePage cuando la dirección física de la entrada de página grande no está alineada con la cobertura de la tabla de página hoja. Disponible a partir de Windows 10 versión 1607 (WDDM 2.1).

SysMem64KBPageSupported

El controlador proporciona administración de segmentos de memoria a 64 KB. Disponible a partir de Windows 10 versión 1607 (WDDM 2.1).

InvalidTlbEntriesNotCached

Cuando se establece este bit, el controlador no recibirá llamadas a DxgkDdiBuildPagingBuffer para las solicitudes FlushTlb para los intervalos de VA que pasan de un estado no válido a válido. Se espera que el TLB del hardware no almacene en caché las traducciones no válidas.

Disponible a partir de Windows 10 versión 1903 (WDDM 2.6).

SysMemLargePageSupported

El controlador proporciona compatibilidad con páginas grandes. Disponible a partir de Windows Server 2022 (WDDM 2.9).

CachedPageTables

Se admiten tablas de páginas almacenadas en caché. Disponible a partir de WDDM 3.1.

Reserved

Reservado para uso del sistema; no use.

Value

Valor de la estructura de la unión expresada como un entero.

PageTableUpdateMode

Define el tipo de direcciones que se usan en las operaciones DxgkDdiUpdatePageTable . Cuando se establece DXGK_PAGETABLEUPDATE_GPU_VIRTUAL , toda la operación de paginación se producirá en el espacio de direcciones virtuales del contexto del sistema. Cuando los directorios de página se encuentran en un segmento de memoria de GPU local, el modo de actualización no se puede establecer en DXGK_PAGETABLEUPDATE_CPU_VIRTUAL.

VirtualAddressBitCount

Número de bits en la dirección virtual de GPU.

LeafPageTableSizeFor64KPagesInBytes

Tamaño de una tabla de página hoja cuando se usan páginas de 64 KB. El tamaño debe ser un múltiplo de tamaño de página de CPU (4096).

PageTableLevelCount

Número de niveles de tabla de página admitidos. El valor mínimo es 2 (definido como DXGK_MIN_PAGE_TABLE_LEVEL_COUNT). El valor máximo es DXGK_MAX_PAGE_TABLE_LEVEL_COUNT.

Cuando PageTableLevelCount es 2, la tabla de página raíz se cambia dinámicamente de tamaño y el tamaño de la tabla de páginas se determina a través de DxgkDdiGetRootPageTableSize. Cuando PageTableLevelCount es mayor que 2, todos los niveles de tabla de páginas tienen un tamaño fijo, que se describe a través de DXGK_PAGE_TABLE_LEVEL_DESC::P ageTableSizeInBytes.

LegacyBehaviors

LegacyBehaviors.SourcePageTableVaInTransfer

Cuando se establece en 1, el administrador de memoria de vídeo establece la dirección SourcePageTable en TransferVirtual durante la expulsión de la asignación.

LegacyBehaviors.Reserved

Reservado; no usar.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10
Servidor mínimo compatible Windows Server 2016
Encabezado d3dkmddi.h (incluye D3dkmddi.h)