DXGK_SEGMENTDESCRIPTOR 结构 (d3dkmddi.h)

DXGK_SEGMENTDESCRIPTOR 结构包含有关驱动程序支持的段的信息。

语法

typedef struct _DXGK_SEGMENTDESCRIPTOR {
  [out] PHYSICAL_ADDRESS  BaseAddress;
  [out] PHYSICAL_ADDRESS  CpuTranslatedAddress;
  [out] SIZE_T            Size;
  [out] UINT              NbOfBanks;
  [out] SIZE_T            *pBankRangeTable;
  [out] SIZE_T            CommitLimit;
  [out] DXGK_SEGMENTFLAGS Flags;
} DXGK_SEGMENTDESCRIPTOR;

成员

[out] BaseAddress

段的基址,由 GPU) 图形处理单元 (确定。 视频内存管理器在段中分页的分配的物理地址分配了一个 GPU 地址,该地址与 BaseAddress 指定的基址相偏移。

视频内存管理器忽略 AGP 类型光圈段的基址, (Agp 位字段标志在 Flags 成员) 指定,而是使用 AGP 光圈内段的实际物理地址,如 GPU 所在的总线上确定的那样。 在这种情况下,驱动程序可以使用视频内存管理器直接为分配而生成的地址,而无需转换。

[out] CpuTranslatedAddress

段的基址,相对于 GPU 连接的总线。 例如,当 GPU 连接到 PCI 总线时, CpuTranslatedAddress 是由 PCI 基址寄存器指定的可用范围的基址 (BAR) 。 仅当驱动程序通过在 Flags 成员中设置 CpuVisible 位字段标志来指定可访问 CPU 的段时,才指定此地址。

对于光圈段(包括 AGP 类型的光圈段),将忽略此成员。 当用户模式显示驱动程序未为主分配设置备用虚拟地址 (即驱动程序在调用 pfnLockCb 函数期间未在D3DDDICB_LOCKFLAGS结构的 Flags 成员中设置 UseAlternateVA 时,会发生唯一的异常) 。

在视频内存管理器将虚拟地址映射到物理范围之前,视频内存管理器会根据总线的 CPU 视图转换此物理地址,并通知驱动程序有关操作的信息,以便驱动程序可以设置一个光圈来访问给定位置段的内容。

[out] Size

段的大小(以字节为单位)。 此大小必须是本机主机页面大小的倍数, (例如,x86 体系结构) 上的 4 KB。

对于 AGP 类型光圈段 (其中 Agp 位字段标志在 Flags 成员) 中指定,视频内存管理器分配尽可能多的光圈空间,因此忽略此成员。

[out] NbOfBanks

段中的银行数(如果使用 banking (即,如果在 Flags 成员) 中设置了 UseBanking 位字段标志。

[out] pBankRangeTable

一个值数组,指示分隔段中每个库的区域。 仅当驱动程序还设置 Flags 成员中的 UseBanking 位字段标志时,驱动程序才指定此数组。

数组通过 NbOfBanks指定第一个银行 (的结束地址,即,每个银行) 的结束偏移量。 注意以下事项:

  • 银行是连续的。

  • 第一个库从段的偏移零开始。

  • 最后一个库在段的末尾结束,因此驱动程序不需要指定最后一个库的结束地址。

[out] CommitLimit

可提交到段的最大字节数。 对于内存段,提交限制始终与 在 Size 成员中指定的段大小相同。 对于光圈段,驱动程序可以限制可提交到具有少量物理内存的系统上段的内存量。

[out] Flags

一个 DXGK_SEGMENTFLAGS 结构,用于标识段的位字段标志中的属性。

请注意,对于 AGP 类型的光圈段,驱动程序必须在DXGK_SEGMENTFLAGS包含的联合中专门设置结构的 Agp 成员。 尽管 AGP 类型的光圈段是一个光圈并且可供 CPU 访问,但如果设置了任何其他成员,适配器将无法初始化。

要求

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

另请参阅

D3DDDICB_LOCKFLAGS

DXGKARG_QUERYADAPTERINFO

DXGK_ALLOCATIONINFO

DXGK_QUERYSEGMENTIN

DXGK_QUERYSEGMENTOUT

DXGK_SEGMENTFLAGS

DxgkDdiQueryAdapterInfo

pfnLockCb