Compartir a través de


estructura D3DKMDT_FENCESTORAGESURFACEDATA (d3dkmddi.h)

La estructura D3DKMDT_FENCESTORAGESURFACEDATA describe los segmentos de memoria donde se debe colocar el almacenamiento de barrera.

Sintaxis

typedef struct _D3DKMDT_FENCESTORAGESURFACEDATA {
  UINT                          PhysicalAdapterIndex;
  DXGKARG_FENCESTORAGEVALUETYPE FenceStorageValueType;
  D3DDDI_NATIVEFENCE_TYPE       FenceStorageType;
  UINT                          PrivateDriverDataSize;
  BYTE                          *pPrivateDriverData;
  DXGKARG_FENCESTORAGEFLAGS     Flags;
  UINT                          Reserved;
  DXGK_ALLOCATIONINFO           AllocationInfo;
} D3DKMDT_FENCESTORAGESURFACEDATA;

Miembros

PhysicalAdapterIndex

[in] Índice del adaptador físico en una configuración de LDA donde residirá el almacenamiento de barreras.

FenceStorageValueType

[in] Valor de DXGKARG_FENCESTORAGEVALUETYPE que especifica el tipo del valor de barrera nativa.

FenceStorageType

[in] Valor D3DDDI_NATIVEFENCE_TYPE que especifica el tipo de la valla nativa.

PrivateDriverDataSize

[in] Tamaño, en bytes, de los datos del controlador privado a los que pPrivateDriverData apunta.

pPrivateDriverData

[in] Puntero a los datos del controlador privado. Reservado para uso futuro.

Flags

[in] Valor de DXGKARG_FENCESTORAGEFLAGS que especifica las marcas para el almacenamiento de barreras.

Reserved

[in] Reservado para uso futuro.

AllocationInfo

[out] Estructura DXGK_ALLOCATIONINFO en la que el controlador debe devolver las propiedades de asignación.

Observaciones

Cuando el sistema operativo llama a la función dxgkDdiGetStandardAllocation del controlador en modo kernel con un tipo de asignación estándar de D3DKMDT_STANDARDALLOCATION_FENCESTORAGE, el controlador debe devolver los segmentos de memoria donde se debe colocar el almacenamiento de barrera en D3DKMDT_FENCESTORAGESURFACEDATA.

En función de los campos de entrada, el controlador debe rellenar la siguiente información de asignación en AllocationInfo:

  • supportedWriteSegmentSet
  • evictionSegmentSet
  • preferredSegment

El controlador debe omitir el puntero a los datos privados. El controlador no debe comprobar que el puntero es NULL y no debe solicitar datos privados estableciendo su tamaño.

Los valores supervisados de las vallas nativas deben colocarse en un segmento de memoria visible de CPU, ya que se actualizan mediante punteros de CPU.

Después de crear un objeto de barrera nativa que tenga el tipo D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU, el controlador en modo de usuario siempre debe establecer el valor inicial enviando un paquete DMA mediante una dirección virtual de GPU. Los valores actuales se empaquetan en una página de memoria 4K, que puede estar en un segmento de memoria local visible que no sea cpu. Por lo tanto, el sistema operativo no tiene una manera de establecer el valor inicial.

Las asignaciones compartidas siempre se colocan en la memoria del sistema.

Para obtener más información, consulte objetos de barrera de GPU nativas.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 11, versión 24H2 (WDDM 3.2)
encabezado de d3dkmddi.h

Consulte también

D3DDDI_NATIVEFENCE_TYPE

D3DKMDT_STANDARDALLOCATION_TYPE

DXGK_ALLOCATIONINFO

DXGKARG_FENCESTORAGEFLAGS

DXGKARG_FENCESTORAGEVALUETYPE

DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA

dxgkDdiGetStandardAllocation