windows显示驱动开发-用于连接和配置的接口(二)

路径优先顺序

SetDisplayConfig CCD 函数确定按 pathArray 参数指定的路径数组中的活动路径进行排序,以便 SetDisplayConfig 为较低的数组路径元素提供更高的优先级。 以下项会影响排序:

如果 SetDisplayConfig 找不到现有的显示配置, 则 SetDisplayConfig 在搜索顺序的最佳模式逻辑中使用路径优先级。 因此,SetDisplayConfig 更可能在本机分辨率下满足高优先级的路径,而非低优先级路径。

在克隆路径中,优先级最高的路径是计划翻转的路径。 因此,优先级较低的路径可能会发生轻微的撕裂现象。

DirectX 图形内核子系统利用路径优先级(连同 GDI 主视图)来派生路径重要性值,并将该值传递给显示微型端口驱动程序调用中的 D3DKMDT_VIDPN_PRESENT_PATH 结构的 ImportanceOrdinal 成员。 路径重要性值会影响驱动程序决策,例如驱动程序应在资源分配中优先选择的路径。 例如,低序号路径可能能够更好地访问叠加层或更高质量的控制器。

QueryDisplayConfig CCD 函数始终按优先级顺序返回路径。 如果在 QueryDisplayConfig 的 Flags 参数中设置了QDC_ALL_PATHS标志,QueryDisplayConfig 将返回 pPathInfoArray 参数指定的路径数组中的所有活动路径组合之后的所有非活动路径组合。

桌面布局

调用方在对 SetDisplayConfig CCD 函数的调用中使用 DISPLAYCONFIG_SOURCE_MODE 结构的 position 成员来控制桌面上源图面的排列。 位置成员指定源图面左上角桌面坐标中的位置。 定位在 (0, 0) 处的源图面被视为主图面。 GDI 具有有关如何在桌面空间中排列源图面的严格规则。 例如,GDI 不允许源图面之间的任何间隙,也不允许在源图面中重叠。

尽管 SetDisplayConfig 尝试重新排列源图面以强制实施这些 GDI 布局规则,但调用方应指定源图面的布局。 未定义 GDI 如何重新排列源图面以强制实施其布局规则,而源图面的结果布局可能不是调用方想要实现的。

模式信息与路径信息之间的关系

连接和配置 (CCD) QueryDisplayConfig 函数始终返回特定显示配置的路径信息以及源模式和目标模式信息。 下图显示了未设置 DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE 时源和目标模式信息与路径信息的关系的示例;也就是说,当路径不识别虚拟时。 在此示例中,QDC_ALL_PATHS标志在对 QueryDisplayConfig 的调用中传递给 Flags 参数。

从 Windows 10 开始, DISPLAYCONFIG_PATH_INFO、 DISPLAYCONFIG_PATH_SOURCE_INFO和 DISPLAYCONFIG_PATH_TARGET_INFO 结构将更新为支持虚拟感知的路径:

  • DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE标志已添加为标志值。 设置此标志时,它指示路径支持虚拟模式。
  • 在DISPLAYCONFIG_PATH_SOURCE_INFO中增加了一个联合体。 仅当未设置添加的标志时,才使用 modeInfoIdx 成员。 设置标志时,模式信息位于 cloneGroupId 和 sourceModeInfoIdx 成员中。
  • 向DISPLAYCONFIG_PATH_TARGET_INFO添加了一个联合体。 仅当未设置添加的标志时,才使用 modeInfoIdx 成员。 设置标志后,模式信息位于 desktopModeInfoIdx 和 targetModeInfoIdx 成员中。
相关推荐
fly五行16 小时前
Windows 系统下使用 Docker 安装 Milvus 向量数据库
windows·docker·milvus
hello kitty w16 小时前
Python学习(11) ----- Python的泛型
windows·python·学习
加号317 小时前
【C#】获取电脑网卡MAC地址
windows·c#
QT 小鲜肉17 小时前
【个人成长笔记】在本地Windows系统中如何正确使用adb pull命令,把Linux系统中的文件或文件夹复制到本地中(亲测有效)
linux·windows·笔记·学习·adb
-指短琴长-18 小时前
Docker基础【Ubuntu安装/Windows安装】
windows·ubuntu·docker
shykevin20 小时前
uni-app x导航区域跳转
windows·uni-app
熙xi.21 小时前
Linux I²C 总线驱动开发:从架构到实战的完整指南
linux·c语言·驱动开发
讨喜Dobi1 天前
深浅复制
windows
彷徨而立1 天前
【C/C++】只知道窗口句柄,如何擦除窗口内容,清理窗口?
c语言·c++·windows