"); //-->
骁龙820A系列汽车级处理器针对汽车生态系统而设计,并具有众多显著特性:
•连接、多媒体和图形功能可支持诸多基于云的实时特性,包括串流多媒体、企业协作、实时地图与定位服务、远程诊断和一键式车载信息处理,为汽车OEM带来性能、连接和多媒体创新上的巨大潜力
我们本篇将来聊聊关于图形系统WayLand/Weston。
简单地说,Wayland是一套display server(Wayland compositor)与client间的通信协议,而Weston是Wayland compositor的参考实现。其官网为http://wayland.freedesktop.org/。它们定位于在Linux上替换X图形系统。X图形系统经历了30年左右的发展,其设计在今天看来已略显陈旧。在X系统中,X Server作为中心服务,连接clien和硬件以及compositor。但时至今日,原本在X Server中做的事很多已被移到kernel或者单独的库中,因此X Server就显得比较累赘了。Wayland在架构上去掉了这个中间层,将compositor作为display server,使client与compositor直接通信,从而在灵活性和性能等方面上能够比前辈更加出色。
Wayland既可以用于传统的桌面又适用于移动设备,已经被用于Tizen,Sailfish OS等商业操作系统,同时越来越多的窗口和图形系统开始兼容Wayland协议。Wayland基于domain socket实现了一套display server与client间通信的库(简单的基于例子的介绍可以参见http://blog.csdn.net/jinzhuojun/article/details/40264449),并且以XML形式定义了一套可扩展通信协议。这个协议分为Wayland核心协议和扩展协议(位于Weston中)。Weston作为Wayland compositor的参考实现,一般和Wayland同步发布。其它Wayland compositor实现还有如mutter, Kwin, Lipstick, Enlightenment, Clayland等。
下面分别从架构,源码及模块结构,渲染流水线,窗口和输入管理几个方面介绍下Wayland/Weston的实现。
架构
Wayland的系统体系架构可以参见官方文档,不再累述。Weston从内部体系结构来看,主要分为窗口管理(shell),合成器(compositor)和输入管理几个部分。可见,如果拿Android作类比,从功能上看它约等同于InputManagerService,WindowManagerService和SurfaceFlinger。从大体的流程上来看,输入管理模块接受用户输入,然后一方面shell作出相应的窗口管理操作(如窗口堆栈的改变,focus的变化等),另一方面将该input event传给之前注册了相应输入事件的client。client收到后会在handler中做相应动作,如调整视图然后重绘。如有重绘发生,新buffer渲染完成后client将其handle传给server,接着server端生成z-order序的窗口列表,之后compositor用renderer进行合成,最后输出(比如到framebuffer)。

Weston是主要服务进程,它的事件处理模型采用的是典型的Reactor模式。根据Linux中万物皆文件的原则,主循环通过epoll机制等待在一系列的文件fd上。这种模型与基于线程的binder不同,是一种串行的事件处理模型。在此模型上的过程调用在不加额外同步机制的情况下是异步的。好处是不会有竞争问题,数据同步开销较小。缺点是当有一个事件处理比较耗时或者在等待IO,则有可能使整个系统性能下降或响应不及时。

主循环上等待的几个核心fd包括:
• Server/Client通信:listener fd在Weston启动时建立,并一直监听新的client连接。一个client连接后会与Weston建立一对domain socket,Wayland就是基于它来通信的。
• 输入处理:一方面通过udev monitor监听设备的添加删除事件。另一方面如有新设备添加时会将该设备打开并监听该fd来得到输入事件。
• 其它:监听如timer(用于如睡眠锁屏等场景)和signal(如收到SIGINT, SIGTERM, SIGQUIT时退出主循环)等事件。timer和signal可以分别用timerfd和signalfd来用fd来表示。另外还有logind的dbus连接等。
除这些外,在event loop中还会维护一个idle list。Weston中需要异步处理的操作可以放在其中。每轮循环都会检查其中是否有任务,有的话拿出来执行。
下面看下Weston的运行时进程模型。Weston设计时是可以以一般用户运行的,但就需要用weston-launch来启动。当需要进行一些需要root权限的工作,比如关于DRM, TTY, input device的相关操作,就交由weston-launch去做。
Weston会在启动时或按需起一些子进程,它们本质上是Weston的client,它们会通过专用的协议做一些系统应用的工作。如系统应用weston-desktop-shell负责一些系统全局的界面,比如panel, background, cursor, app launcher, lock screen等。它不作为Weston服务本身的一部分,而是作为一个client。其作用有点类似于Android中的SystemUI。这样便可方便地替换成定制的界面。weston-keyboard是软键盘面板。weston-screenshooter和weston-screensaver分别用于截屏和屏保,它们都是按需才由Weston启动的。前者在截屏快捷键按下时启动,后者在需要锁屏时启动。

另外,Weston启动时会读取weston.ini这个配置文件,其中可以配置桌面,动画和后端等等信息。详细配置见http://manpages.ubuntu.com/manpages/raring/man5/weston.ini.5.html。
关于图形系统的简介我们会在后面分为三个部分来进行描述。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
OpenAI 在立法者权衡未成年人 AI 标准之际,为 ChatGPT 增加了新的青少年安全规则
8052 仿真器
AD22105低电压、电阻可编程温控开关
基于ARM7的智能行动辅助专家
纽约州州长凯西·霍楚尔签署RAISE法案以规范人工智能安全
书籍推荐:实时设计模式
三星全球首款2nm芯片Exynos 2600玩“减法”:未集成5G基带
F2-750A型智能模糊控制电饭锅电路
可不可以通过设置proxy的方式来实现nat功能啊
89C51 单片机 I/O 口模拟串行通信的实现方法
据报道,Meta正在为2026年发布开发一款新的图像和视频模型
我国科学家实现光芯片研究新突破 光芯片短缺或将持续至2026年底
有刷直流电机驱动IC主要用于家电中的超低待机
智能迎宾机器人的设计与实现
瑞萨推进SDV路线图,采用3nm R-Car第五代平台
How to develop an eXtended board for PC104 with embedded linux?
高强度放电(HID)灯电子镇流器设计
基于P89LPC932A1的酒后驾车检测控制系统
对twentyone写的bootloade看不懂的地方,想问问!!
H200想进中国不容易,至少要翻越三座大山
科泰T-9328放大器信号选择电路
科泰T-9328放大器主声道功放电路
LM3886低音炮电路
AI 在 EDA 中扮演多重角色
应用于健康手机的高性能生物电信号采集模块
Perodua的QV-E为大众市场电动车提供电池即服务
ADuC845 数据采集单片机
Spartan-3A/3AN FPGA入门开发板电路图
ADE7756 带串行接口单相有功计量
有关dns的疑问