Compartir a través de


estructura DXGK_SEGMENTDESCRIPTOR3 (d3dkmddi.h)

La estructura de DXGK_SEGMENTDESCRIPTOR3 contiene información sobre un segmento compatible con el controlador que se compone de memoria reservada del BIOS (que se purga durante una transición a un estado de bajo consumo) y memoria reservada del controlador.

Sintaxis

typedef struct _DXGK_SEGMENTDESCRIPTOR3 {
  [out] DXGK_SEGMENTFLAGS Flags;
  [out] PHYSICAL_ADDRESS  BaseAddress;
  [out] PHYSICAL_ADDRESS  CpuTranslatedAddress;
  [out] SIZE_T            Size;
  [out] UINT              NbOfBanks;
  [out] SIZE_T            *pBankRangeTable;
  [out] SIZE_T            CommitLimit;
        SIZE_T            SystemMemoryEndAddress;
        SIZE_T            Reserved;
} DXGK_SEGMENTDESCRIPTOR3;

Miembros

[out] Flags

Estructura DXGK_SEGMENTFLAGS que identifica las propiedades, en marcas de campo de bits, para el segmento.

Tenga en cuenta que para un segmento de apertura de tipo AGP, el controlador debe establecer exclusivamente el miembro Agp de la estructura en la unión que DXGK_SEGMENTFLAGS contiene. Aunque el segmento de apertura de tipo AGP es una abertura y es accesible para la CPU, si se establecen otros miembros, el adaptador no se inicializa.

[out] BaseAddress

La dirección base del segmento, determinada por la unidad de procesamiento gráfico (GPU). La dirección física de una asignación a la que el administrador de memoria de vídeo paginado en el segmento tiene asignada una dirección gpu que se desplaza desde la dirección base que especifica BaseAddress .

El administrador de memoria de vídeo omite la dirección base de los segmentos de apertura de tipo AGP (donde se especifica la marca de campo de bits Agp en el miembro Flags ) y, en su lugar, usa la dirección física real del segmento dentro de la apertura de AGP, según se determina en el bus donde se encuentra la GPU. En esta situación, el controlador puede usar direcciones que el administrador de memoria de vídeo generó para la asignación directamente sin necesidad de traducción.

[out] CpuTranslatedAddress

La dirección base del segmento, relativa al bus en el que está conectada la GPU. Por ejemplo, cuando la GPU está conectada en el bus PCI, CpuTranslatedAddress es la dirección base del intervalo utilizable especificado por un registro de dirección base (BAR) PCI. El controlador especifica esta dirección solo si especifica un segmento accesible para la CPU estableciendo la marca de campo de bits CpuVisible en el miembro Flags .

Este miembro se omite para los segmentos de apertura, incluido el segmento de apertura de tipo AGP. La única excepción se produce cuando el controlador de pantalla en modo de usuario no ha configurado una dirección virtual alternativa para una asignación principal (es decir, cuando el controlador no ha establecido UseAlternateVA en el miembro Flags de la estructura D3DDDICB_LOCKFLAGS durante una llamada a la función pfnLockCb ).

Antes de que el administrador de memoria de vídeo asigne una dirección virtual al intervalo físico, el administrador de memoria de vídeo traduce esta dirección física en función de la vista de CPU del bus e informa al controlador sobre la operación para que el controlador pueda configurar una apertura para acceder al contenido del segmento en la ubicación especificada.

[out] Size

Tamaño, en bytes, del segmento. Este tamaño debe ser un múltiplo del tamaño de página host nativo (por ejemplo, 4 KB en la arquitectura x86).

Para los segmentos de apertura de tipo AGP (donde se especifica la marca de campo de bits de Agp en el miembro Flags ), el administrador de memoria de vídeo asigna tanto espacio de apertura como sea posible, por lo que este miembro se omite.

[out] NbOfBanks

El número de bancos del segmento, si se usa la banca (es decir, si la marca de campo de bits UseBanking se establece en el miembro Flags ).

[out] pBankRangeTable

Matriz de valores que indica los intervalos que delimitan cada banco del segmento. El controlador especifica esta matriz solo si también establece la marca de campo de bits UseBanking en el miembro Flags .

La matriz especifica las direcciones finales del primer banco a través del banco NbOfBanks(es decir, los desplazamientos finales en el segmento de cada banco). Tenga en cuenta lo siguiente:

  • Los bancos son contiguos.

  • El primer banco comienza en el desplazamiento cero del segmento.

  • El último banco termina al final del segmento, por lo que no es necesario que el controlador especifique la dirección final del último banco.

[out] CommitLimit

Número máximo de bytes que se pueden confirmar en el segmento. Para un segmento de memoria, el límite de confirmación siempre es el mismo que el tamaño del segmento, que se especifica en el miembro Size . Para un segmento de apertura, el controlador puede limitar la cantidad de memoria que se puede confirmar en el segmento en sistemas con pequeñas cantidades de memoria física.

SystemMemoryEndAddress

En el caso de los segmentos que se componen parcialmente de la memoria del sistema, todas las asignaciones que comienzan después de esta dirección se purgan en un estado de hibernación. Las asignaciones que existen por completo en la memoria del sistema, donde la dirección del segmento es menor o igual que SystemMemoryEndAddress, no se expulsan en esta transición.

El controlador de minipuerto de pantalla debe establecer este miembro en un valor distinto de NULL si el segmento se conserva parcialmente en un estado de hibernación, en cuyo caso se debe establecer el miembro PartiallyPreservedDuringHibernate en la estructura DXGK_SEGMENTFLAGS .

La memoria reservada del controlador se ejecuta desde la dirección de segmento 0 hasta SystemMemoryEndAddress, ambos incluidos. La memoria reservada del BIOS se ejecuta desde (SystemMemoryEndAddress+1) hasta el final del segmento.

Reserved

Este miembro está reservado y debe establecerse en cero.

Comentarios

Esta estructura la usa un miniporte de pantalla de modo kernel WDDM 1.2 o posterior para devolver información sobre los segmentos de memoria en respuesta a una llamada de función DxgkDdiQueryAdapterInfo en la que el subsistema de gráficos especifica el valor DXGKQAITYPE_QUERYSEGMENT3 en el miembro Type de la estructura DXGKARG_QUERYADAPTERINFO .

El miembro pSegmentDescriptor de la estructura DXGK_QUERYSEGMENTOUT3 apunta a esta estructura.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8
Servidor mínimo compatible Windows Server 2012
Encabezado d3dkmddi.h

Consulte también

D3DDDICB_LOCKFLAGS

DXGKARG_QUERYADAPTERINFO

DXGK_QUERYSEGMENTOUT3

DXGK_SEGMENTFLAGS

DxgkDdiQueryAdapterInfo