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)

另请参阅

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFOFLAGS

DXGK_ALLOCATIONLIST

DXGK_ALLOCATIONUSAGEHINT

DXGK_SEGMENTBANKPREFERENCE

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTPREFERENCE

DxgkDdiCreateAllocation

DxgkDdiRender

pfnAllocateCb