01-weston 简介

参考​​​​​​weston wiki

Weston - Gentoo Wiki

weston (1): Linux man pages – code.tools

Weston-1.12.0

非常详尽,多图慎入:Wayland与Weston简介 - 云+社区 - 腾讯云

什么是weston?

Wayland是一套display server(Wayland compositor)与client间的通信协议,而Weston是Wayland compositor的参考实现。

Wayland 架构

Wayland protocol设计成2层通信:底层基于C语言和socket通讯 ,顶层基于XML实现

Wayland protocol分为两个库文件:libwayland-server和libwayland-client,分别由Wayland compositors和Wayland client使用。

01-weston 简介_第1张图片

 Wayland Core Interfaces

源码目录protocol/wayland.xml定义了Wayland protocol,最基本的协议一般包括:

01-weston 简介_第2张图片

 Rendring Mode 

wayland协议中不包括渲染API,client可以使用cairo或者opengl渲染库来自己实现所有渲染任务,也可以依赖wayland支持组件库(QT、GTK)来实现。窗口内容渲染好后存储在wl_buffer object中,窗口数据必须可在client and the compositor之间可以共享。如果client使用CPU渲染,结果将存储在memory中,这种情况下,client and the compositor可以通过share memory来实现共享(wl_shm and wl_shm_pool interfaces)。缺点就是显示的performance可能会下降,因为compositor会有一些额外的任务,比如,将共享的数据发送给GPU,这时候会产生一些延迟。

典型的做法是通过OpenGL, OpenGL ES or Vulkan提供的API结合GPU实现硬件加速,Client and compositor 通过特殊句柄引用GPU-space的buffer而非main memory中的buffer,compositor可以避免额外的数据拷贝(client-to-compositor-to-GPU)。

如何显示是由client指导compositor实现的,client将渲染好的buffer和surface绑定,commit给compositor。compositor显示结束后释放buffer,通过event通知client。

01-weston 简介_第3张图片

Weston 依赖GEM实现buffer在APP和compositor之间共享。

Weston中使用libinput来处理输入设备(键盘、鼠标、touch等)

 01-weston 简介_第4张图片

你可能感兴趣的:(Linux,Graphic,linux,weston)