欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Windows 图形显示驱动开发-WDDM 2.7功能-MCDM KM 驱动程序实现指南(四)

Windows 图形显示驱动开发-WDDM 2.7功能-MCDM KM 驱动程序实现指南(四)

2025/4/1 1:02:13 来源:https://blog.csdn.net/m0_72813396/article/details/146367704  浏览:    关键词:Windows 图形显示驱动开发-WDDM 2.7功能-MCDM KM 驱动程序实现指南(四)

查询适配器信息要求

如前所述,仅计算驱动程序必须支持 DxgkDdiQueryAdapterInfo。

必须支持以下 DXGK_QUERYADAPTERINFOTYPE 类型:

  • DXGKQAITYPE_DRIVERCAPS
  • DXGKQAITYPE_NUMPOWERCOMPONENTS
  • DXGKQAITYPE_HISTORYBUFFERPRECISION
  • DXGKQAITYPE_QUERYSEGMENT4 

 使用内存段描述 GPU 地址空间

视频内存管理器 (VidMm) 负责管理 GPU 的地址空间。 在此之前,内核模式显示微型端口驱动程序 (KMD) 必须通过使用内存段将 GPU 的地址空间描述为 VidMm。

KMD 创建内存段以概括和虚拟化视频内存资源。 它可以根据硬件支持的存储器类型(例如,帧缓冲区内存或系统内存调节)配置内存段。

在驱动程序初始化期间,KMD 必须返回描述 VidMm 如何管理内存资源的段类型列表。 KMD 指定了它支持的段类型的数量,并通过响应对其 DxgkDdiQueryAdapterInfo 函数的调用来描述每种段类型。 驱动程序使用 DXGK_SEGMENTDESCRIPTOR 结构描述每个段。 有关详细信息,请参阅初始化内存段的使用。

此后,段的数量和类型保持不变。 VidMm:

  • 确保每个进程在任何特定段中都能获得公平的资源份额,
  • 独立管理所有段。

段不重叠。 因此,VidMm 可以从一个段分配相当数量的视频内存资源,而不管应用程序从另一个段持有多少资源。

KMD 为每个内存段分配一个段标识符。 稍后,当 VidMm 请求为视频资源创建分配并呈现这些资源时,KMD:

  • 标识支持请求的段。
  • 按顺序指定驱动程序希望 VidMm 使用的段。

KMD 不需要在其内存段中指定 GPU 可用的所有视频内存资源。 但是,KMD 必须指定 VidMm 在系统上运行的所有进程中管理的所有内存资源。 例如:

  • 实现固定函数管道的顶点着色器微代码可以驻留在 GPU 地址空间中,但在 VidMm 管理的内存之外(即不是段的一部分)。 此配置是可能的,因为微代码始终可用于所有进程,并且永远不会成为进程之间争用的来源。
  • 对于顶点缓冲区、纹理、呈现目标和应用程序特定的着色器代码等资源,VidMm 必须从驱动程序的内存段之一分配视频内存资源。 这一要求是因为资源类型必须对所有进程公平可用。

下图显示了 KMD 如何从 GPU 地址空间配置内存段的示例。

图中的数字对应于以下内存段:

  1. CPU 可访问的线性段:此段可由 CPU 访问,并组织为线性地址空间。

  2. 非 CPU 可访问的线性段:该段被组织为线性地址空间,但 CPU 无法访问。 它用于不需要 CPU 访问的资源。

  3. 只读 AGP 光圈段:此段用于对 AGP(加速图形端口)内存进行只读访问。

  4. 光圈段:此段用于通过 AGP 光圈访问的资源。

隐藏框表示 KMD 不向 VidMm 公开的内存段。 隐藏在 VidMm 中的视频内存不能映射到用户空间,也不能被任何特定进程独占。 这样做违反了虚拟内存的基本规则,即要求系统上运行的所有进程都可以访问所有内存。

支持以下DXGK_QUERYADAPTERINFOTYPE类型是可选的:

  • DXGK_ADAPTER_PERFDATA
  • DXGK_ADAPTER_PERFDATACAPS
  • DXGKQAITYPE_UMDRIVERPRIVATE
  • DXGKQAITYPE_PHYSICALADAPTERCAPS
  • DXGK_NODE_PERFDATA
  • DXGK_GPUVERSION

如果报告了一个或多个无效内存块,则必须支持以下DXGK_QUERYADAPTERINFOTYPE:

  • DXGKQAITYPE_SEGMENTMEMORYSTATE

如果支持 GPUVA,则必须支持以下DXGK_QUERYADAPTERINFOTYPE:

  • DXGKQAITYPE_GPUMMUCAPS
  • DXGKQAITYPE_PAGETABLELEVELDESC

如果报告的电源组件数大于零,则必须支持以下DXGK_QUERYADAPTERINFOTYPE:

  • DXGKQAITYPE_POWERCOMPONENTINFO

如果设置了 IoMmuSecureModeSupported 上限,则必须支持以下DXGK_QUERYADAPTERINFOTYPE:

  • DXGKQAITYPE_FRAMEBUFFERSAVESIZE
  • DXGKQAITYPE_HARDWARERESERVEDRANGES

不得支持以下DXGK_QUERYADAPTERINFOTYPE:

  • DXGKQAITYPE_DEVICE_TYPE_CAPS
  • DXGKQAITYPE_DISPLAY_DRIVERCAPS_EXTENSION
  • DXGKQAITYPE_DISPLAYID_DESCRIPTOR
  • DXGKQAITYPE_INTEGRATED_DISPLAY_DESCRIPTOR
  • DXGKQAITYPE_INTEGRATED_DISPLAY_DESCRIPTOR2
  • DXGKQAITYPE_POWERCOMPONENTPSTATEINFO
  • DXGKQAITYPE_PREFERREDGPUNODE
  • DXGKQAITYPE_QUERYCOLORIMETRYOVERRIDES
  • DXGKQAITYPE_QUERYSEGMENT
  • DXGKQAITYPE_QUERYSEGMENT2
  • DXGKQAITYPE_QUERYSEGMENT3
  • DXGKQAITYPE_UEFIFRAMEBUFFERRANGES

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词