window显示驱动开发—为头装载和专用监视器生成自定义合成器应用(一)

Windows.Devices.Display.Core API 是适用于第三方组合器以及内部 Windows 组件的低级别Windows 运行时 (WinRT) API,位于所有其他公共 API 下面,用于枚举、配置和驱动 Windows 中的显示适配器和显示目标。 其思路是将显示控制器视为单独的引擎,类似于 GPU 上的 3D 引擎和媒体引擎。 此 API 负责:

  • 回答有关显示硬件的查询(如功能和可能的显示模式)
  • 回答有关当前配置的查询
  • 在显示硬件上设置属性(如显示模式)
  • 配置显示硬件(连接的监视器分辨率、其线路格式等)
  • 分配和扫描称为主节点的特殊 GPU 图面
  • 允许在 Direct3D 与 Windows.Devices.Display.Core API 之间实现互操作(例如共享图面、围栏)

值得指出的是,Windows.Devices.Display.Core 不是:

  • 它不是游戏或应用用于在窗口中显示内容的 API。 应用仍使用 DXGI、 XAML、 合成 API、 GDI 等。
  • 它不是游戏或应用用于显示内容全屏的 API。 应用仍使用 DXGI、Win32 应用仍使用 HWND,UWP 应用始终在 CoreWindow 中显示内容。

此 API 仅适用于驱动专用硬件的 compositor 应用。

用于生成自定义合成器的方案

Windows.Devices.Display.Core API 适用于以下方案:

  • 虚拟和增强现实显示器,需要专有组合器来直接驱动显示控制器,并接收与 Windows 桌面分开的计时和模式配置的精细控制。
  • 专用显示硬件方案,需要对商业设置中的显示器进行专用控制。 例如,如果 Windows 桌面由于硬件扭曲、灰度显示器等而无法在此类显示器上正确呈现。
  • 专用的"设备"方案,其中监视器可能完全专用于应用,而不会长时间受到 Windows 桌面体验的任何干扰(例如专用视频监视器)。

API 通过以下方式实现此目的:

  • 提供对完整显示模式信息的精细控制,包括线路格式、HDR 等。
  • 使用围栏来同步演示文稿,可让合成器跨进程或子组件链接演示文稿,且性能开销几乎为零。
  • 提高查询和配置基础视频演示网络(VidPN)的能力,以允许系统组件和低级别组合组件以不太容易出错且更可扩展的方式执行更复杂的操作。

请注意,此 API 仅适用于 具有专用硬件的第三方用例集 。 它的使用高度仅限于声明自己需要此 API 功能的硬件。 因此,开发人员应熟悉硬件概念,合作伙伴应直接与Microsoft联系,以帮助解决问题。

硬件和软件要求

第三方自定义合成器只能获取已预先指定为头载显示器(HMD)或"专用"显示器的显示器。 必须以以下两种方式之一提供此指定:

EDID 扩展 - 用于永久用作 HMD、X 射线监视器、视频墙或其他专用方案的自定义显示设备应实现 用于头部装载和专用显示器的 Microsoft EDID 扩展。

用户替代 - 对于使用现成监视器的自定义硬件安装,Windows 提供了一个 UI 开关,用于将监视器指定为"专用"。

通过覆盖软件中的 EDID,显示器可能 未 指定为 HMD 或专用显示器。

备注

专用显示器仅在 Windows 10 版本 2004 中可用,需要Windows 10 企业版、Windows 10 专业工作站版或Windows 10 IoT 企业版。

实现自定义合成器路线图

实现自定义合成器可以分为几个阶段:

  • 枚举和发现关联的 HMD 或专用显示
  • 获取所选显示器的所有权
  • 为所有选定的显示配置模式
  • 创建用于显示帧的资源
  • 呈现内容和计划框架演示文稿
相关推荐
sukalot13 小时前
windows显示驱动开发-调试间接显示驱动程序(三)
windows·驱动开发
sukalot13 小时前
windows显示驱动开发-间接显示驱动程序
驱动开发
Saniffer_SH1 天前
【高清视频】CXL 2.0 over Fibre演示和答疑 - 将内存拉到服务器10米之外
运维·服务器·网络·人工智能·驱动开发·计算机外设·硬件工程
tt5555555555551 天前
Linux 驱动开发与内核通信机制——超详细教程
linux·驱动开发·b树
sukalot2 天前
windows显示驱动开发-调试间接显示驱动程序(一)
驱动开发
cellurw2 天前
Day52 串口通信原理与IMX6ULL UART驱动开发
驱动开发
深盾科技2 天前
Windows 驱动开发基础
windows·驱动开发·stm32
会跑的葫芦怪3 天前
Gin 框架令牌桶限流实战指南
驱动开发·gin
Nautiluss3 天前
WIN7下安装RTX3050 6GB显卡驱动
人工智能·驱动开发·opencv
小狗爱吃黄桃罐头3 天前
正点原子【第四期】Linux之驱动开发学习笔记-5.1 设备树下的LED驱动实验
linux·驱动开发·学习