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 或专用显示
  • 获取所选显示器的所有权
  • 为所有选定的显示配置模式
  • 创建用于显示帧的资源
  • 呈现内容和计划框架演示文稿
相关推荐
华清远见成都中心4 小时前
分享一个驱动开发工程师学习路线图
驱动开发·学习
DeeplyMind18 小时前
linux drm子系统专栏介绍
linux·驱动开发·ai·drm·amdgpu·kfd
Shang180989357261 天前
T41NQ/T41N高性能低功耗SOC芯片 软硬件资料T41NQ适用于各种AIoT应用,适用于智能安防、智能家居,机器视觉等领域方案
驱动开发·嵌入式硬件·计算机视觉·fpga开发·信息与通信·t41nq
amberman2 天前
解读 PCIe Gen6 RAS
驱动开发·fpga开发·硬件工程
逻极2 天前
AI 规范驱动开发“三剑客”深度对比:Spec-Kit、Kiro 与 OpenSpec 实战指南
人工智能·驱动开发·ai·agent
逻极2 天前
Claude Code 实战:Spec-Kit、Kiro、OpenSpec 规范驱动开发三剑客
ide·人工智能·驱动开发·ai·自动化
范纹杉想快点毕业3 天前
100道关于STM32的问题解答共十万字回答,适用入门嵌入式软件初级工程师,筑牢基础,技术积累,校招面试。
驱动开发·单片机·嵌入式硬件·fpga开发·硬件工程
进击大厂的小白3 天前
35.linux的定时器使用
驱动开发
winner88814 天前
嵌入式Linux驱动开发全流程:工具协作+核心概念拆解(从入门到理解)
linux·运维·驱动开发
Evan_ZGYF丶4 天前
深入解析CFS虚拟运行时间:Linux公平调度的核心引擎
linux·驱动开发·嵌入式·bsp