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
D3DKMDT_STANDARDALLOCATION_TYPE
DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA