初始化内存段的使用

内存段在 Windows Vista 和更高版本 (WDDM) 的显示驱动程序模型的上下文中,描述图形处理单元的 (GPU) 地址空间到视频内存管理器。 内存段通用化并虚拟化视频内存资源。 内存段根据硬件支持的内存类型进行配置 (例如,帧缓冲区内存或系统内存口径) 。

若要初始化其如何使用内存段,Microsoft DirectX graphics 内核子系统 (Dxgkrnl.sys) 调用显示微型端口驱动程序的 DxgkDdiQueryAdapterInfo 函数。 为了指示显示微型端口驱动程序从DxgkDdiQueryAdapterInfo调用返回有关内存段的信息,图形子系统指定了DXGKARG_QUERYADAPTERINFO结构的类型成员中的DXGKQAITYPE_QUERYSEGMENTDXGKQAITYPE_QUERYSEGMENT3值。

对于段信息,图形子系统两次调用显示微型端口驱动程序的 DxgkDdiQueryAdapterInfo 函数。 对 DxgkDdiQueryAdapterInfo 的第一次调用检索驱动程序支持的段数,第二次调用则检索有关每个段的详细信息。 在对DxgkDdiQueryAdapterInfo的调用中,驱动程序将指向DXGKARG_QUERYADAPTERINFOpOutputData成员,以填充 Windows 显示驱动程序模型 (wddm) 1.2) 或为 WDDM 1.2 和更高版本的驱动程序 DXGK_QUERYSEGMENTOUT3 填充 (结构 (的驱动程序版本的DXGK_QUERYSEGMENTOUT结构。

第一次调用时, DXGK_QUERYSEGMENTOUT (的PSEGMENTDESCRIPTOR成员用于 wddm 1.2) 的驱动程序版本或 wddm 1.2 和更高版本的驱动程序 (的DXGK_QUERYSEGMENTOUT3) 设置为NULL。 驱动程序只应将DXGK_QUERYSEGMENTOUTDXGK_QUERYSEGMENTOUT3NbSegment成员填入它支持的段类型的数目。 此数字还指示 WDDM 1.2) 之前的驱动程序版本的未填充DXGK_SEGMENTDESCRIPTOR (数,或在DxgkDdiQueryAdapterInfo的第二次调用中,为 wddm 1.2 和更高版本的驱动程序 (结构的DXGK_SEGMENTDESCRIPTOR3) 。

在第二次调用中,驱动程序应填写 DXGK_QUERYSEGMENTOUTDXGK_QUERYSEGMENTOUT3的所有成员。 在第二次调用中,驱动程序应使用与驱动程序所支持的段相关的信息,在DXGK_QUERYSEGMENTOUTDXGK_QUERYSEGMENTOUT3pSegmentDescriptor成员中填充数组的大小为NbSegmentDXGK_SEGMENTDESCRIPTORDXGK_SEGMENTDESCRIPTOR3结构。

在两次调用DxgkDdiQueryAdapterInfo时, DXGKARG_QUERYADAPTERINFOpInputData成员指向DXGK_QUERYSEGMENTIN结构,该结构包含 AGP 口径的位置和属性的相关信息。 如果没有 AGP 口径可用,或者存在,但未安装适当的 GART 驱动程序,则有关 AGP 口径的信息设置为零。 如果没有 AGP 口径,则显示微型端口驱动程序不应在DXGK_QUERYSEGMENTOUTDXGK_QUERYSEGMENTOUT3pSegmentDescriptor数组中指示它支持 AGP 类型孔径段。 如果在这种情况下指示 AGP 类型的口径段,则适配器将无法初始化。

在初始化期间,由于内存为大量,因此可以从特定段分配分页缓冲区的内存。 视频内存管理器从DXGK_QUERYSEGMENTOUTDXGK_QUERYSEGMENTOUT3PagingBufferSegmentId成员中指定的段为分页缓冲区分配内存。 驱动程序指示 DxgkDdiQueryAdapterInfo的第二次调用中分页缓冲区段的标识符。 驱动程序还应指定为DXGK_QUERYSEGMENTOUTDXGK_QUERYSEGMENTOUT3PagingBufferSize成员中的分页缓冲区分配的大小(以字节为单位)。

有关内存段和使用分页缓冲区的详细信息,请参阅 处理内存段分页视频内存资源