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) |