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 |
另请参阅
D3DKMDT_STANDARDALLOCATION_TYPE