Compartir a través de


estructura DXGK_ALLOCATIONINFO (d3dkmddi.h)

La estructura DXGK_ALLOCATIONINFO describe los parámetros para crear una asignación.

Sintaxis

typedef struct _DXGK_ALLOCATIONINFO {
  VOID                       *pPrivateDriverData;
  UINT                       PrivateDriverDataSize;
  union {
    UINT Alignment;
    struct {
      UINT16 MinimumPageSize;
      UINT16 RecommendedPageSize;
    };
  };
  SIZE_T                     Size;
  SIZE_T                     PitchAlignedSize;
  DXGK_SEGMENTBANKPREFERENCE HintedBank;
  DXGK_SEGMENTPREFERENCE     PreferredSegment;
  union {
    UINT SupportedReadSegmentSet;
    UINT MmuSet;
  };
  UINT                       SupportedWriteSegmentSet;
  UINT                       EvictionSegmentSet;
  union {
    UINT MaximumRenamingListLength;
    UINT PhysicalAdapterIndex;
  };
  HANDLE                     hAllocation;
  union {
    DXGK_ALLOCATIONINFOFLAGS         Flags;
    DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 FlagsWddm2;
  };
  DXGK_ALLOCATIONUSAGEHINT   *pAllocationUsageHint;
  UINT                       AllocationPriority;
  DXGK_ALLOCATIONINFOFLAGS2  Flags2;
} DXGK_ALLOCATIONINFO;

Miembros

pPrivateDriverData

[in] Puntero a un bloque de datos privados. Estos datos son para cada asignación y son distintos del miembro pPrivateDriverData de la estructura DXGKARG_CREATEALLOCATION. El controlador de pantalla en modo de usuario (UMD) podría pasar estos datos al controlador de miniporte de pantalla en modo kernel (KMD). Sin embargo, si Dxgkrnl pasa estos datos para describir la superficie principal compartida u otra superficie bloqueable, los datos se pasan como el primer elemento de la matriz del pAllocationInfo miembro de DXGKARG_CREATEALLOCATION.

PrivateDriverDataSize

[in] Tamaño, en bytes, del bloque de datos privados en pPrivateDriverData.

Alignment

[out] Alineación necesaria, en bytes, para la asignación.

MinimumPageSize

RecommendedPageSize

Size

[out] Tamaño, en bytes, necesario para la asignación. El valor de tamaño se expande a un múltiplo del tamaño de página host nativo (por ejemplo, 4 KB en la arquitectura x86). El KMD especifica el tamaño de asignación al administrador de memoria de vídeo (VidMm).

PitchAlignedSize

[out] Tamaño, en bytes, de la asignación cuando se encuentra en un segmento alineado con el tono, especificado por el PitchAlignment marca de campo de bits en el Flags miembro de la estructura DXGK_SEGMENTDESCRIPTOR del segmento. Si la asignación no se admite en un segmento alineado con tono (las GPU no suelen admitir este tipo de segmento), el controlador debe establecer el valor en PitchAlignedSize en cero. Si el controlador especifica un valor distinto de cero en pitchAlignedSize, el valor debe ser mayor o igual que el valor del miembro Size de .

HintedBank

[out] Estructura DXGK_SEGMENTBANKPREFERENCE que especifica las preferencias de ordenación bancaria de KMD que VidMm usar para paginar la asignación. Si se especifica este miembro, VidMm usa información bancaria sobre el segmento más preferido, que especifica el miembro SegmentId0 de la estructura DXGK_SEGMENTPREFERENCE que especifica el miembro PreferredSegment.

PreferredSegment

[out] Estructura DXGK_SEGMENTPREFERENCE que indica los identificadores de segmentos preferidos que solicita el KMD que VidMm usar para paginar la asignación.

SupportedReadSegmentSet

[out] Identificadores de segmento que el KMD puede establecer en el miembro preferredSegment de para las operaciones de lectura. Los segmentos que indican estos identificadores son segmentos que las solicitudes de KMD VidMm usar para paginar la asignación de operaciones de lectura, independientemente del rendimiento. Si se establece el bit 0, se indica que se admite el primer segmento, si se establece el bit 1, se indica que se admite el segundo segmento, etc.

El KMD solo puede establecer preferencias para segmentos compatibles con las operaciones de lectura. VidMm afirma si el controlador intenta establecer preferencias para segmentos no admitidos en el miembro preferredSegment de .

MmuSet

SupportedWriteSegmentSet

[out] Identificadores de segmento que el KMD puede establecer en el miembro de PreferredSegment para las operaciones de escritura. Los segmentos que indican estos identificadores son segmentos que solicita kmD que VidMm usar para paginar la asignación de operaciones de escritura, independientemente del rendimiento. Si se establece el bit 0, se indica que se admite el primer segmento, si se establece el bit 1, se indica que se admite el segundo segmento, etc.

El KMD solo puede establecer preferencias para segmentos compatibles con las operaciones de escritura. VidMm afirma si el controlador intenta establecer preferencias para segmentos no admitidos en el miembro preferredSegment de .

EvictionSegmentSet

[out] Identificadores de segmentos que se pueden usar para la expulsión. Si se establece el bit 0, se indica que el primer segmento se puede usar para la expulsión, si se establece el bit 1, se indica que se puede usar el segundo segmento para la expulsión, etc.

Este miembro solo puede especificar segmentos de apertura. Si el controlador especifica segmentos válidos que se van a usar para la expulsión, VidMm intenta asignar recursos en esos segmentos de apertura para acelerar el proceso de expulsión. Si el controlador especifica 0, VidMm llama al controlador para transferir el contenido de una asignación directamente a la memoria del sistema bloqueada por páginas sin asignar las páginas subyacentes a través de un segmento de apertura.

MaximumRenamingListLength

[out] Longitud máxima de la lista de cambio de nombre para la asignación. Para obtener más información sobre el cambio de nombre de la lista, vea Solicitud para cambiar el nombre de unde asignación.

La compatibilidad con este miembro comenzó con Windows 10 y WDDM v2.

PhysicalAdapterIndex

[out] Índice del adaptador físico.

La compatibilidad con este miembro comenzó con Windows 10 y WDDM v2.

hAllocation

[out] Identificador de la asignación. El KMD debe establecer este miembro en un valor que puede usar para hacer referencia a su estructura de seguimiento privado para la asignación.

Flags

[out] Estructura DXGK_ALLOCATIONINFOFLAGS que identifica las propiedades de una asignación en marcas de campo de bits. Estas propiedades indican el tipo de asignación que se va a crear. El KMD especifica estas marcas para VidMm. Los controladores que tienen como destino cualquier versión de WDDM anterior a WDDM 2.0 deben usar Marcas; Los controladores que tienen como destino cualquier versión de WDDM >= WDDM 2.0 deben usar FlagsWddm2.

FlagsWddm2

[out] Estructura DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 que identifica las propiedades de una asignación en marcas de campo de bits. Estas propiedades indican el tipo de asignación que se va a crear. El KMD especifica estas marcas para VidMm. Los controladores que tienen como destino cualquier versión de WDDM >= WDDM 2.0 deben usar FlagsWddm2; Los controladores que tienen como destino cualquier versión de WDDM anterior a WDDM 2.0 deben usar Marcas.

pAllocationUsageHint

[out] Puntero a una estructura de DXGK_ALLOCATIONUSAGEHINT que usa el administrador de memoria para determinar cómo usar la asignación.

AllocationPriority

[out] Valor UINT que especifica el nivel de prioridad inicial de la asignación.

El controlador determina el nivel de prioridad adecuado para cada asignación. Para obtener más información sobre los niveles de prioridad, vea la sección Comentarios de la función de pfnSetPriorityCb. Si el nivel de prioridad de las asignaciones no es un problema para el controlador, el controlador debe establecer todos los niveles de prioridad en D3DDDI_ALLOCATIONPRIORITY_NORMAL. Tenga en cuenta que 0 es una prioridad de asignación inicial no válida.

Flags2

[out] Estructura DXGK_ALLOCATIONINFOFLAGS2 que contiene propiedades adicionales para una asignación. Se admite a partir de Windows 11 (WDDM 3.0).

Observaciones

Con WDDM v2, la estructura DXGK_ALLOCATIONINFO se ha cambiado para que el conjunto de segmentos de lectura y escritura ya no se diferencie. Durante la creación de la superficie, VidMm omitirá el valor de SupportedReadSegmentSet y usará solo el conjunto de segmentos proporcionado por SupportedWriteSegmentSet. Los controladores deben asegurarse de que este valor representa con precisión el conjunto de segmentos que la asignación puede usar para su propósito previsto.

Omitir el conjunto de segmentos de lectura admitido no significa que ya no se admita, sino simplemente que ya no debería haber una diferencia entre estos conjuntos y VidMm podrá elegir un segmento adecuado para cualquier asignación de un único conjunto de segmentos.

Requisitos

Requisito Valor
cliente mínimo admitido Windows Vista
encabezado de d3dkmddi.h (incluya D3dkmddi.h)

Consulte también

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFOFLAGS

DXGK_ALLOCATIONLIST

DXGK_ALLOCATIONUSAGEHINT

DXGK_SEGMENTBANKPREFERENCE

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTPREFERENCE

dxgkDdiCreateAllocation

dxgkDdiRender

pfnAllocateCb