初始化内存段的使用

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

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

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

在第一次调用中,WDDM 1.2 及更高版本的驱动程序版本DXGK_QUERYSEGMENTOUT (的 pSegmentDescriptor 成员设置为 NULL,该成员适用于 WDDM 1.2 及更高版本的驱动程序) ) 或DXGK_QUERYSEGMENTOUT3 (。 驱动程序应仅使用它支持的段类型数填充 DXGK_QUERYSEGMENTOUTDXGK_QUERYSEGMENTOUT3NbSegment 成员。 此数字还指示 WDDM 1.2 之前驱动程序版本的未填充 DXGK_SEGMENTDESCRIPTOR (数,) 或 DXGK_SEGMENTDESCRIPTOR3 (WDDM 1.2 及更高版本驱动程序) 从第二次调用 DxgkDdiQueryAdapterInfo 所需的结构。

第二次调用中,驱动程序应填充 DXGK_QUERYSEGMENTOUTDXGK_QUERYSEGMENTOUT3的所有成员。 第二次调用中,驱动程序应使用驱动程序支持的段的相关信息填充DXGK_QUERYSEGMENTOUT或DXGK_QUERYSEGMENTOUT3的 pSegmentDescriptor 成员中DXGK_SEGMENTDESCRIPTORDXGK_SEGMENTDESCRIPTOR3结构 NbSegment 大小的数组。

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

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

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