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 成员。 用户模式显示驱动程序可能会将此数据传递给显示微型端口驱动程序。 但是,如果 Microsoft DirectX 图形内核子系统传递此数据来描述共享的主图面或其他可锁定图面,则数据将作为数组的第一个元素在 DXGKARG_CREATEALLOCATION 的 pAllocationInfo 成员中传递。

PrivateDriverDataSize

[in] pPrivateDriverData 中私有数据块的大小(以字节为单位)。

Alignment

[out]分配所需的对齐方式(以字节为单位)。

MinimumPageSize

RecommendedPageSize

Size

[out]分配所需的大小(以字节为单位)。 size 值扩展为本机主机页面大小的倍数, (例如,x86 体系结构) 上的 4 KB。 显示微型端口驱动程序指定视频内存管理器的分配大小。

PitchAlignedSize

[out]分配的大小(以字节为单位),当它位于音调对齐的段(由段DXGK_SEGMENTDESCRIPTOR结构的Flags 成员中的 PitchAlignment 位字段标志指定)。 如果间距对齐的段不支持分配, (图形处理单元 [GPU] 通常不支持这种类型的段) ,驱动程序应将 PitchAlignedSize 中的值设置为零。 如果驱动程序在 PitchAlignedSize 中指定了非零值,则该值必须大于或等于 Size 成员中的值。

HintedBank

[out] DXGK_SEGMENTBANKPREFERENCE 结构,指示显示微型端口驱动程序请求视频内存管理器用于分页分配的银行订购首选项。 如果指定此成员,视频内存管理器将使用有关最首选段的银行信息,该信息由 PreferredSegment 成员指定的DXGK_SEGMENTPREFERENCE结构的 SegmentId0 成员指定。

PreferredSegment

[out] DXGK_SEGMENTPREFERENCE 结构,指示显示微型端口驱动程序请求视频内存管理器用于分页分配的首选段标识符。

SupportedReadSegmentSet

[out]显示微型端口驱动程序可以在 PreferredSegment 成员中为读取操作设置的段标识符。 这些标识符指示的段是显示微型端口驱动程序请求视频内存管理器用于分页执行读取操作分配的段,而不管性能如何。 设置位 0 表示支持第一个段,设置位 1 表示支持第二个段,依序而行。

显示微型端口驱动程序只能为读取操作支持的段设置首选项。 视频内存管理器断言驱动程序是否尝试为 PreferredSegment 成员中不受支持的段设置首选项。

MmuSet

SupportedWriteSegmentSet

[out]显示微型端口驱动程序可以在 PreferredSegment 成员中为写入操作设置的段标识符。 这些标识符指示的段是显示微型端口驱动程序请求视频内存管理器用于分页执行写入操作分配的段,而不管性能如何。 设置位 0 表示支持第一个段,设置位 1 表示支持第二个段,依序而行。

显示微型端口驱动程序只能为写入操作支持的段设置首选项。 视频内存管理器断言驱动程序是否尝试为 PreferredSegment 成员中不受支持的段设置首选项。

EvictionSegmentSet

[out]可用于逐出的段的标识符。 设置位 0 表示第一个段可用于逐出,设置位 1 表示第二个段可用于逐出,依序而行。

此成员只能指定光圈段。 如果驱动程序指定要用于逐出的有效段,则视频内存管理器会尝试在这些光圈段中分配资源,以加速逐出过程。 如果驱动程序指定 0,则视频内存管理器会调用驱动程序,以将分配的内容直接传输到分页锁定的系统内存,而无需通过光圈段映射基础页面。

MaximumRenamingListLength

[out]分配的重命名列表的最大长度。 有关重命名列表的详细信息,请参阅 请求重命名分配

对此成员的支持始于 Windows 10 和 WDDM v2。

PhysicalAdapterIndex

[out]物理适配器的索引。

对此成员的支持始于 Windows 10 和 WDDM v2。

hAllocation

[out]分配的句柄。 显示微型端口驱动程序必须将此成员设置为一个值,该值可用于引用分配的专用跟踪结构。

Flags

[out] 一种DXGK_ALLOCATIONINFOFLAGS 结构,用于标识位字段标志中分配的属性。 这些属性指示要创建的分配类型。 显示微型端口驱动程序为视频内存管理器指定这些标志。 面向早于 WDDM 2.0 的任何 WDDM 版本的驱动程序应使用 标志;面向任何 WDDM 版本 >= WDDM 2.0 的驱动程序应使用 FlagsWddm2

FlagsWddm2

[out]一种 DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 结构,用于标识位字段标志中分配的属性。 这些属性指示要创建的分配类型。 显示微型端口驱动程序为视频内存管理器指定这些标志。 面向任何 WDDM 版本 >= WDDM 2.0 的驱动程序应使用 FlagsWddm2;面向任何早于 WDDM 2.0 版本的 WDDM 的驱动程序应使用 Flags

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 结构已更改,以便不再区分读取和写入段集。 在创建图面期间,视频内存管理器将忽略 SupportedReadSegmentSet 值,并仅使用 SupportedWriteSegmentSet 提供的段集。 驱动程序应确保此值准确表示可供分配用于其预期用途的段集。

忽略支持的读取段集并不意味着它不再受支持,而只是这些集之间不应再有区别,并且将允许视频内存管理器为单个段集中的任何分配选择适当的段。

要求

要求
最低受支持的客户端 Windows Vista
标头 d3dkmddi.h (包括 D3dkmddi.h)

另请参阅

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFOFLAGS

DXGK_ALLOCATIONLIST

DXGK_ALLOCATIONUSAGEHINT

DXGK_SEGMENTBANKPREFERENCE

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTPREFERENCE

DxgkDdiCreateAllocation

DxgkDdiRender

pfnAllocateCb