共计 3479 个字符,预计需要花费 9 分钟才能阅读完成。
本文转载自 OpenHarmony TSC 官网微信公众号《峰会回顾第 7 期 | 视窗绘制技术演进和新趋势》
演讲嘉宾 | 陈秋林
回顾整顿 | 廖 涛
排版校对 | 李萍萍
嘉宾简介
陈秋林,华为终端 OS 资深架构师、菲尔兹 Lab 主任,长期从事终端 OS 研发,先后负责 LiteOS、安卓性能优化、HMS 框架、OpenHarmony 视窗零碎等架构设计和技术开发。
文章内容起源
第一届凋谢原子开源基金会 OpenHarmony 技术峰会——OS 内核及视窗分论坛
视频回顾
视频链接:https://www.bilibili.com/video/BV1fP41127ZW/?spm_id_from=333….
正 文 内 容
视窗绘制是图形操作系统的根底能力,它决定终端利用图形界面的显示性能和品质,以及用户操作的响应快慢和晦涩体验。在万物智联的新场景下,视窗绘制技术的倒退有哪些挑战,技术上又有哪些演进趋势呢?华为终端 OS 资深架构师陈秋林在第一届 OpenHarmony 技术峰会上,分享了几点思考。
01►终端视窗绘制面临的新挑战
视窗零碎(Windowing system/window system)是图形操作系统的重要子系统之一,负责将利用的性能界面以图形显示给用户,并反对用户对其通过触摸、键盘鼠标、语音等形式进行交互和操控。视窗零碎由桌面环境、GUI 框架、显示服务以及窗口管理器等 4 大部分组成,别离负责提供利用及其入口治理、利用开发框架和 SDK、图形界面绘制和显示、窗口治理和操作控制等性能。
视窗零碎
1.1►►高分辨率和高刷新率的遍及,带来更高的 GUI 绘制挑战
视窗绘制的计算负载由屏幕分辨率、帧率以及画面质量等因素决定。随着终端软硬件倒退,屏幕分辨率、帧率以及画面质量一直晋升,视窗绘制负载一直升高。如 6k 分辨率 @240Hz 屏幕的视窗绘制负载比 2k 分辨率 @60Hz 增长 30 多倍。240Hz 的刷新率要求 CPU&GPU 在 4ms 内实现一帧的绘制,屏幕分辨率每晋升 1 倍,GPU 负载和 DDR 带宽将进步 4 倍。
1.2►►跨设施协同和跨零碎生态交融,对视窗的跨设施和跨零碎能力提出挑战
万物智联新场景下,用户终端设备品种多,须要反对以用户核心的多设施协同体验。要求视窗零碎提供分布式窗口的能力,以反对窗口级跨设施流转。此外,PC 上不可避免生态兼容问题,如 PC 上要兼容 Linux 利用、windows 利用或安卓利用。这要求视窗零碎具备多源窗口交融治理的能力。这两方面体验与用户冀望还存在较大差距,须要进一步思考在视窗零碎上如何做翻新。
1.3►►智能座舱等场景 2D/3D UI 交融,对视窗绘制提出新的性能挑战
目前,智能座舱的架构从“多芯多屏”向“一芯多屏”+“跨域交融”倒退。该趋势下,下层利用将变得更加简单:
(1)仪表域中 2D 仪表和 3D 酷炫车体交融显示;
(2)中控域 360AR 全景显示,2D 菜单按钮与 3D AR 内容交融显示;
(3)HUD 域显示信息与 3D 场景交融显示。
在硬件总体算力降落但视窗绘制负载大幅晋升的状况下,视窗零碎如何实现“一芯多屏”、2D/3D UI 交融的晦涩体验呢?
“一芯多屏”架构
1.4►►沉迷式场景,带来新的交互变动,对视窗提出新诉求
沉迷式 XR 利用,与一般终端利用在显示和交互上均有显著区别。沉迷式利用面对的是 2D、3D 交融空间,须要用 2D 屏幕触控操控 3D 对象,操控点可能在三维空间或三维模型上的某一个不规则面上,如何确定操作对象呢?这波及三维空间焦点定义问题。沉迷式场景,对视窗零碎提出了虚实交融显示、3D 空间新交互范式以及空间感知等新诉求。
多样化沉迷式设施
02►Linux、安卓和 iOS 视窗绘制架构的演进
2.1►►Linux 视窗架构
Linux 视窗架构是围绕性能和生态兼容两条线演进的。晚期应用 X11 协定进行图形渲染,起初采纳 DRI 形式减速绘制,再到 Wayland 中将 Render 和窗口管理器集成在一起。在生态兼容方面,有 Xwayland 解决 X11 利用与 Wayland 的兼容,Glamor 解决与图形 API 兼容等问题。
Linux 视窗架构
2.2►►Android 视窗架构
Android 视窗架构次要围绕性能演进。
第 1 阶段,即 Android 3.0 之前,应用 CPU 形式渲染 UI;
第 2 阶段,即 Android 4.0 开始,开启硬件加速(GPU 渲染);
第 3 阶段,即 Android 4.1,引入 VSYNC 和 Triple Buffer;
第 4 阶段,即 Android 5.0,实现了 Render 线程和 UI 线程拆散。
Android 视窗架构次要特点:
(1)采纳拆散渲染架构,每个利用独立执行动画、渲染;
(2)采纳多 Buffer 轮转,来尽量地躲避丢帧卡顿景象;
(3)窗口治理和合成(SurfaceFlinger)拆散;
(4)2D 渲染由 Skia 图形库承载。
Android 视窗架构
2.3►►iOS 视窗架构
iOS 视窗架构的演进次要聚焦在 Metal 和 AR 上的翻新,如基于 Metal 的 MPS 及 AR Kit 等。与 Linux 和安卓上的不同点:
(1)采纳对立渲染架构,窗口内控件动效及跨窗口联动动效对立解决;
(2)近年来大力发展 AR 图形生态,以 AR 场景利用推动 3D 渲染技术演进,并通过各种 Kit 提供外挂式 3D 能力;
(3)围绕自研 GPU 及新一代 Metal API 进行垂直整合(软硬协同);
(4)各类 SDK 及开发工具深度整合,各个 Kit 间互操作性好,从底层能力到零碎框架造成整体解决方案。
iOS 视窗架构
总的来说,Linux 视窗架构围绕性能和兼容性继续演进,Android 视窗架构围绕性能演进,iOS 视窗架构演进聚焦于对立渲染,垂直整合,与开发工具深度整合。
03►视窗绘制新技术和趋势
3.1►►高能效 GUI 绘制
以 Android 为主的当代视窗中,GUI 绘制与显示管线的架构简单,流程简短,波及屡次过程间协同,并行化低,导致性能及功耗问题。此外,2D 绘制的 CPU 与 GPU 间交互调用 Driver Overhead 高,GPU overdraw 问题重大。针对上述传统 2D 管线现存问题,需摸索数据驱动 2D 极简管线架构:CPU 负责生成 2D 图元数据,通过绘制指令提交到 GPU 中,GPU 对 2D 图元数据进行预处理、光栅化以及着色,实现高性能 UI 绘制。在理论的试验中,相比于传统 2D 管线,数据驱动 2D 极简管线的 CPU 负载降落 50%+,同时大幅简化了 GPU 驱动。
数据驱动 2D 极简管线
3.2►►分布式窗口和异构窗口交融
多屏协同场景中,现有基于投屏的计划存在传输数据量大,功耗高、时延大以及帧率低等缺点。需摸索分布式窗口技术,拉通设施间的窗口运行环境,将用户界面窗口显示和应用逻辑解耦,实现窗口可在设施间自在流转,自适应新设施显示环境,且功耗 / 时延 / 刷新率优于投屏。此外,生态利用运行在虚拟机 / 容器中时,容器利用窗口与 Host 零碎原生窗口没有对立治理,两者操控体验齐全割裂,须要摸索多源窗口交融技术,实现对立治理,体验统一。
异构窗口交融架构
3.3►►2D&3D 交融的 UI 框架
在车载智能驾驶舱场景,3D 图形联合 2D UI 展现各种信息,为驾驶者提供精确和沉迷式驾驶体验已成为趋势。以后 UI 开发框架对 2D&3D 交融场景反对仍有余,次要体现为:OS 视窗的 GUI 框架以反对 2D 界面开发为主,不足 3D 的动静光影成果和空间深度感;而纯 3D 界面开发框架(如 Kanzi 和各种游戏引擎框架)开发难度大,门槛高。因而,需进一步摸索高性能、轻量化的 2D&3D 交融的 UI 框架,以实现 2D&3D 混合 UI 开发,需具备以下性能:
(1)提供 3D 场景控件,加载 3D 场景模型,反对真实性渲染;
(2)可将 2D UI 嵌入到 3D 场景,与 3D 模型子外表进行关联显示;
(3)反对将 2D UI 控件与 3D 场景属性双向关联;
(4)2D&3D 渲染管线无缝切换。
2D&3D 交融 UI 框架
3.4►►新一代人机交互及显示
在 XR、Metaverse 等新场景下,用户交互界面是 3D 空间,传统 2D 立体交互范式已无奈实用。OS 视窗需额定提供位姿、环境感知零碎,虚实交融显示零碎和新型 UI 组件。
人机交互及显示计划
总的来说,在将来新场景下,视窗架构须要围绕:(1)极简 UI 绘制管线;(2)分布式窗口,多源窗口交融;(3)2D&3D 交融 UI 框架;(4)沉迷式场景的新的交互范式的 4 个趋势进行摸索和演进。
04►总结
利用场景及用户需要的变动是视窗绘制技术演进的次要驱动力,期待大家一起关注和参加视窗绘制技术创新,独特助力 OS 视窗更好地使能万物互联新场景。
点击关注理解更多 OpenHarmony TSC 技术干货内容