峰会回顾第7期 | 视窗绘制技术演进和新趋势

news2024/11/22 19:22:03

本文转载自 OpenHarmony TSC 官方微信公众号峰会回顾第7期 | 视窗绘制技术演进和新趋势

演讲嘉宾 | 陈秋林

回顾整理 | 廖   涛

排版校对 | 李萍萍

嘉宾简介

陈秋林,华为终端OS资深架构师、菲尔兹Lab主任,长期从事终端OS研发,先后负责LiteOS、安卓性能优化、HMS框架、OpenHarmony视窗系统等架构设计和技术开发。

文章内容来源

第一届开放原子开源基金会OpenHarmony技术峰会——OS内核及视窗分论坛

视频回顾

视频链接:峰会回顾第7期 | 视窗绘制技术演进和新趋势-陈秋林_哔哩哔哩_bilibili

正 文 内 容

视窗绘制是图形操作系统的基础能力,它决定终端应用图形界面的显示性能和质量,以及用户操作的响应快慢和流畅体验。在万物智联的新场景下,视窗绘制技术的发展有哪些挑战,技术上又有哪些演进趋势呢?华为终端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空间新交互范式以及空间感知等新诉求。

多样化沉浸式设备

02Linux、安卓和 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技术干货内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/911703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“MyBatis中的动态SQL、模糊查询与结果映射“

目录 引言1. MyBatis中的动态SQL1.1 if元素1.2 foreach标签 2. MyBatis中的模糊查询三种形式2.1 #{} 模糊查询2.2 ${} 模糊查询2.3 concat() 模糊查询2.4 MyBatis中#与$的区别 3. MyBatis中的结果映射resultType与resultMap的区别 总结 引言 MyBatis是一个强大而灵活的持久层框…

FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

关于esp-aliyun的SDK编译常出错的问题1

下载完SDK后一般会将工程文件夹进行修改已适配自己的项目。这时问题就已经存在了。 如下图所示: 阿里云SDK里面的CMakeLists.txt里多处均调用了esp-aliyun这个文件夹。 还是老老实实的别修改esp-aliyun文件名了哈。

【数学建模】清风数模中正课4 拟合算法

拟合算法 在插值算法中,我们得到的曲线一定是要经过所有的函数点的;而用拟合所得到的曲线则不一样,拟合问题中,不需要得到的曲线一定经过给定的点。 拟合的目的是寻求一个函数曲线,使得该曲线在某种准则下与所有的数…

Java“牵手“拼多多商品详情数据、拼多多优惠券信息、拼多多到手价信息获取方法,拼多多API实现批量商品数据抓取示例

拼多多商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取拼多多商品详情数据,您可以通过开放平台的接口或者直接访问拼多多商城的网页来获取商品详情信息。以下是两种常用方法的介绍:…

vue3——递归组件的使用

该文章是在学习 小满vue3 课程的随堂记录示例均采用 <script setup>&#xff0c;且包含 typescript 的基础用法 一、使用场景 递归组件 的使用场景&#xff0c;如 无限级的菜单 &#xff0c;接下来就用菜单的例子来学习 二、具体使用 先把菜单的基础内容写出来再说 父…

Django实现音乐网站 ⑿

使用Python Django框架制作一个音乐网站&#xff0c; 本篇主要是加载静态资源和推荐页-轮播图、推荐歌单功能开发。 目录 加载静态资源 引入jquery.js 引入bootstrap资源文件 创建基类模板样式文件 推荐页开发 轮播图开发 下载 加载swiper 自定义引入继承块设置 使用…

CW6B-90A-RCW6B-100A-RCW6B-110A-RCW6B-115A-R三相三线式滤波器

CW4B-10A-S CW4B-20A-S CW4B-30A-S三相三线式滤波器 CW6B-50A-S CW6B-60A-S CW6B-70A-S CW6B-80A-S CW6B-90A-S CW6B-100A-S CW6B-250A-S三相三线式滤波器 CW12B-3A-S(005) CW12B-6A-S(005) CW12B-10A-S(005) CW12B-20A-S(005 CW12B-30A-S(005) CW12B-40A-S(005)三…

代理池在过程中一直运行

Hey&#xff0c;爬虫达人们&#xff01;在爬虫的过程中&#xff0c;要保持代理池的稳定性可不容易。今天就来和大家分享一些实用经验&#xff0c;教你如何让代理池在爬虫过程中一直运行&#xff01;方法简单易行&#xff0c;让你的爬虫工作更顺畅. 在进行爬虫工作时&#xff0…

VisualStudio创建项目模板教程

简介 Visual Studio 项目模板是预先定义的项目结构和设置&#xff0c;可以帮助开发者快速启动新的项目。项目模板中可以包含预配置的文件、资源、设置和代码结构&#xff0c;这样开发者在创建新的项目时就不必从零开始。 以下是Visual Studio项目模板的一些核心点&#xff1a…

HD Supply EDI 到 JSON 方案简介

本文将介绍与HD Supply进行EDI对接&#xff0c;通过调用知行之桥的Admin API及JSON格式来集成业务系统。 准备下载和运行 HD Supply EDI 到 JSON 使用 JSON 生成一系列 EDI 文档与 HD Supply 通信。 下载工作流 下载示例文件 HD Supply EDI到JSON示例流具有预配置的端口…

二、3.中断

中断上半部和下半部是什么&#xff1f; 操作系统是中断驱动的&#xff0c;中断发生后会执行相应的中断处理程序&#xff0c;我们希望 CPU 中断响应的时间越短越好&#xff0c;这样便能响应更多设备的中断。但是中断处理程序还是需要完整执行的&#xff0c;不能光为了提高中断响…

数据结构(3)

线性表是多个具有相同特征的数据的有限序列。 前驱元素&#xff1a;A在B前面&#xff0c;称A为B的前驱元素。 后继元素&#xff1a;B在A后面&#xff0c;称B为A的后继元素。 线性表特征&#xff1a; 1.一个元素没有前驱元素&#xff0c;就是头结点&#xff1b; 2.最后一个…

自己实现 SpringMVC 底层机制 系列之-实现任务阶段 5- 完成 Spring 容器对象的自动装配 -@Autowried

&#x1f600;前言 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 5- 完成 Spring 容器对象的自动装配 -Autowried &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&…

数据挖掘技术在智能外呼系统的应用探索

随着科技的不断发展&#xff0c;人们对于智能化的需求也日益增加&#xff0c;在企业获客领域&#xff0c;智能外呼系统应运而生。智能外呼系统是一种基于人工智能技术的客户服务系统&#xff0c;通过自动化的方式实现客户服务&#xff0c;提高客户满意度和企业效率。数据挖掘技…

wifi高通驱动之WCNSS_qcom_cfg.ini以及MCS、空间流数的学习和记录

一、WCNSS_qcom_cfg.ini 这个文件说是可以调优wifi的带宽&#xff0c;还有MIMO技术 Android Wi-Fi MIMO/SISO设置方法&#xff08;基于高通平台&#xff09;_广凯的博客-CSDN博客 不是太了解&#xff0c;先记录一下&#xff0c;个人感觉MCS和MIMO技术最全的应该是下面的网址…

Bigemap在地质工程勘察行业中的应用

Bigemap在地质工程勘察行业中的应用 选择Bigemap的原因&#xff1a; 师兄在测绘局工作&#xff0c;买过全能版&#xff0c;帮我下载过高程数据&#xff0c;我觉得效果可以&#xff0c;于是联系到软件公司进行试用、咨询 使用场景&#xff1a; 影像、等高线、地形等资料下载&…

买空气净化器怎么选 空气净化器哪个牌子性价比高

买空气净化器怎么选 空气净化器哪个牌子性价比高 空气净化器3个选购要点 空气净化器在如今的大气污染严重的环境下越来越受人们关注。然而&#xff0c;在市场上如此多的品牌和型号中&#xff0c;该如何选择一款适合自己的空气净化器呢&#xff1f;以下给出三个选购要点&#…

【校招VIP】网络基础之cookie、session和storage

考点介绍&#xff1a; cookie、session和localstorage 是目前常用的存储机制&#xff0c;不管是大厂还是中小公司&#xff0c;都会对这个问题有比较高的考察频度&#xff0c;而且有一定的深度和对比分析。 本期分享的网络基础之cookie、session和storage&#xff0c;分为试题、…

HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制LazyForEach数据懒加载

LazyForEach从提供的数据源中按需迭代数据&#xff0c;并在每次迭代过程中创建相应的组件。当LazyForEach在滚动容器中使用了&#xff0c;框架会根据滚动容器可视区域按需创建组件&#xff0c;当组件划出可视区域外时&#xff0c;框架会进行组件销毁回收以降低内存占用。一、接…