D3DKMDT_FENCESTORAGESURFACEDATA结构(d3dkmddi.h)

D3DKMDT_FENCESTORAGESURFACEDATA 结构描述应放置围栏存储的内存段。

语法

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;

成员

PhysicalAdapterIndex

[in]LDA 配置中将驻留隔离存储的物理适配器索引。

FenceStorageValueType

[in]一个指定本机围栏值的类型的 DXGKARG_FENCESTORAGEVALUETYPE 值。

FenceStorageType

[in]一个指定本机围栏类型的 D3DDDI_NATIVEFENCE_TYPE 值。

PrivateDriverDataSize

[in]pPrivateDriverData 指向的专用驱动程序数据的大小(以字节为单位)。

pPrivateDriverData

[in]指向专用驱动程序数据的指针。 保留以供将来使用。

Flags

[in]一个 DXGKARG_FENCESTORAGEFLAGS 值,该值指定围栏存储的标志。

Reserved

[in]保留以供将来使用。

AllocationInfo

[out]驱动程序应在其中返回分配属性的 DXGK_ALLOCATIONINFO 结构。

言论

当 OS 调用内核模式驱动程序的 DxgkDdiGetStandardAllocation 函数时,该函数的标准分配类型为 D3DKMDT_STANDARDALLOCATION_FENCESTORAGE,驱动程序必须返回隔离存储应放置在 D3DKMDT_FENCESTORAGESURFACEDATA的内存段。

根据输入字段,驱动程序需要在 AllocationInfo中填写以下分配信息:

  • SupportedWriteSegmentSet
  • 逐出SegmentSet
  • PreferredSegment

驱动程序应忽略指向专用数据的指针。 驱动程序不应检查指针是否为 NULL,不应通过设置其大小来请求专用数据。

本机围栏的受监视值必须放置在 CPU 可见内存段中,因为它们是使用 CPU 指针更新的。

创建具有 D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU 类型的本机围栏对象后,用户模式驱动程序必须始终使用 GPU 虚拟地址提交 DMA 数据包来设置初始值。 当前值打包在 4K 内存页中,该页可以位于非 CPU 可见的本地内存段中。 因此,OS 没有设置初始值的方法。

共享分配始终放置在系统内存中。

有关详细信息,请参阅 本机 GPU 围栏对象

要求

要求 价值
最低支持的客户端 Windows 11 版本 24H2 (WDDM 3.2)
标头 d3dkmddi.h

另请参阅

D3DDDI_NATIVEFENCE_TYPE

D3DKMDT_STANDARDALLOCATION_TYPE

DXGK_ALLOCATIONINFO

DXGKARG_FENCESTORAGEFLAGS

DXGKARG_FENCESTORAGEVALUETYPE

DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA

DxgkDdiGetStandardAllocation