DXGK_ALLOCATIONINFO结构(d3dkmddi.h)
DXGK_ALLOCATIONINFO 结构描述用于创建分配的参数。
语法
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;
成员
pPrivateDriverData
[in]指向专用数据的块的指针。 此数据适用于每个分配,不同于 DXGKARG_CREATEALLOCATION 结构中的 pPrivateDriverData 成员。 用户模式显示驱动程序(UMD)可能会将此数据传递到内核模式显示微型端口驱动程序(KMD)。 但是,如果 Dxgkrnl 传递此数据来描述共享主或其他可锁定表面,则将数据作为 pAllocationInfo 中数组的第一个元素传递,DXGKARG_CREATEALLOCATION的成员 成员。
PrivateDriverDataSize
[in]pPrivateDriverData中专用数据块的大小(以字节为单位)。
Alignment
[out]分配所需的对齐方式(以字节为单位)。
MinimumPageSize
RecommendedPageSize
Size
[out]分配所需的大小(以字节为单位)。 大小值扩展为本机主机页面大小的倍数(例如 x86 体系结构上的 4 KB)。 KMD 指定视频内存管理器的分配大小(VidMm)。
PitchAlignedSize
[out]当分配位于音调对齐段时,分配的大小(以字节为单位),该段由 PitchAlignment 位字段标志在 标志 段 DXGK_SEGMENTDESCRIPTOR 结构的成员指定。 如果在音调对齐段(GPU 通常不支持这种类型的段)中不支持分配,驱动程序应将 PitchAlignedSize 中的值设置为零。 如果驱动程序在 PitchAlignedSize中指定非零值,则该值必须大于或等于 Size 成员中的值。
HintedBank
[out]一个 DXGK_SEGMENTBANKPREFERENCE 结构,它指定 KMD 的银行订购首选项,VidMm 用于分页分配。 如果指定了此成员,则 VidMm 使用有关最首选段的银行信息,该信息由 PreferredSegment 成员指定的 DXGK_SEGMENTPREFERENCE 结构的 SegmentId0 成员指定。
PreferredSegment
[out]DXGK_SEGMENTPREFERENCE 结构,该结构指示 VidMm 用于分页分配的 KMD 请求的首选段标识符。
SupportedReadSegmentSet
[out]KMD 可以在 PreferredSegment 成员中设置的段标识符进行读取操作。 这些标识符指示的段是 KMD 请求 VidMm 用于读取操作的分页分配,而不考虑性能。 设置位 0 表示支持第一段,设置位 1 表示支持第二段,依此等。
KMD 只能为读取操作支持的段设置首选项。 如果驱动程序尝试为 PreferredSegment 成员中不支持的段设置首选项,VidMm 断言。
MmuSet
SupportedWriteSegmentSet
[out]KMD 可以在 PreferredSegment 成员中为写入操作设置的段标识符。 这些标识符指示的段是 VidMm 用于写入操作的分页分配的 KMD 请求(无论性能如何)。 设置位 0 表示支持第一段,设置位 1 表示支持第二段,依此等。
KMD 只能为写入操作支持的段设置首选项。 如果驱动程序尝试为 PreferredSegment 成员中不支持的段设置首选项,VidMm 断言。
EvictionSegmentSet
[out]可用于逐出的段的标识符。 设置位 0 表示第一段可用于逐出,设置位 1 表示第二段可用于逐出,依此说明。
只能由此成员指定光圈段。 如果驱动程序指定要用于逐出的有效段,VidMm 尝试在这些光圈段中分配资源以加速逐出过程。 如果驱动程序指定 0,VidMm 调用驱动程序将分配内容直接传输到分页锁定的系统内存,而无需通过光圈段映射基础页面。
MaximumRenamingListLength
[out]分配的重命名列表的最大长度。 有关重命名列表的详细信息,请参阅 请求重命名分配。
支持此成员从 Windows 10 和 WDDM v2 开始。
PhysicalAdapterIndex
[out]物理适配器的索引。
支持此成员从 Windows 10 和 WDDM v2 开始。
hAllocation
[out]分配的句柄。 KMD 必须将此成员设置为一个值,该值可用于引用其用于分配的专用跟踪结构。
Flags
[out]一个 DXGK_ALLOCATIONINFOFLAGS 结构,用于标识位字段标志中分配的属性。 这些属性指示要创建的分配类型。 KMD 为 VidMm指定这些标志。 面向早于 WDDM 2.0 的任何 WDDM 版本的驱动程序应使用 标志;面向任何 WDDM 版本的驱动程序 >= WDDM 2.0 应使用 FlagsWddm2。
FlagsWddm2
[out]一个 DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 结构,用于标识位字段标志中分配的属性。 这些属性指示要创建的分配类型。 KMD 为 VidMm指定这些标志。 面向任何 WDDM 版本的驱动程序 >= WDDM 2.0 应使用 FlagsWddm2;面向早于 WDDM 2.0 的任何 WDDM 版本的驱动程序应使用 标志。
pAllocationUsageHint
[out]指向内存管理器用来确定如何使用分配的 DXGK_ALLOCATIONUSAGEHINT 结构的指针。
AllocationPriority
[out]一个 UINT 值,该值指定分配的起始优先级。
驱动程序确定每个分配的相应优先级。 有关优先级的详细信息,请参阅 pfnSetPriorityCb 函数的“备注”部分。 如果分配的优先级不是驱动程序的问题,驱动程序应将所有优先级设置为 D3DDDI_ALLOCATIONPRIORITY_NORMAL。 请注意,0 是无效的初始分配优先级。
Flags2
[out]包含分配的其他属性的 DXGK_ALLOCATIONINFOFLAGS2 结构。 从 Windows 11 开始支持(WDDM 3.0)。
言论
使用 WDDM v2 时,DXGK_ALLOCATIONINFO 结构已更改,以便不再区分读取和写入段集。 在 surface 创建期间,VidMm 将忽略 SupportedReadSegmentSet 值,并且仅使用 SupportedWriteSegmentSet提供的段集。 驱动程序应确保此值准确表示分配可用于其预期目的的段集。
忽略支持的读取段集并不意味着不再受支持,但只是这些集之间不应再存在差异,VidMm 将允许为单个段集中的任何分配选择适当的段。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista |
标头 | d3dkmddi.h (包括 D3dkmddi.h) |