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 或专用显示
  • 获取所选显示器的所有权
  • 为所有选定的显示配置模式
  • 创建用于显示帧的资源
  • 呈现内容和计划框架演示文稿
相关推荐
自由的好好干活5 小时前
PCI9x5x驱动移植支持PCI9054在win7下使用4
驱动开发
不怕犯错,就怕不做9 小时前
Linux内核默认允许多个进程打开同一字符设备
linux·驱动开发·嵌入式硬件
不怕犯错,就怕不做10 小时前
RK3562+RK817在关机状态下提升充电电流至2A解决方案
linux·驱动开发·嵌入式硬件
猫猫的小茶馆11 小时前
【Linux 驱动开发】三. 应用程序调用驱动过程分析
linux·arm开发·驱动开发·stm32·单片机·嵌入式硬件·pcb工艺
猫猫的小茶馆14 小时前
【Linux 驱动开发】四. 平台总线驱动
linux·c语言·arm开发·驱动开发·嵌入式硬件·mcu·物联网
小手智联老徐14 小时前
漫谈 Linux 声卡驱动开发的设备树与 I2S
linux·运维·驱动开发
小手智联老徐14 小时前
Jetson Orin Nano 音频设置与开发之 DTS
linux·驱动开发·音视频
松涛和鸣17 小时前
DAY61 IMX6ULL UART Serial Communication Practice
linux·服务器·网络·arm开发·数据库·驱动开发
颜子鱼1 天前
Linux驱动-INPUT子系统
linux·c语言·驱动开发
Lueeee.1 天前
llseek 定位设备驱动实验
linux·驱动开发