最近正在研究 Wayland 的实现,为此准备写一个关于 Wayland 实现分析的一系列文章,目的主要有两个:一是加强自己的理解;二是供同好观摩指教讨论。

 

下面是一个写作提纲(也可以看作是一个写作计划):

1.       Wayland 简介

主要介绍 Wayland 是什么、Wayland 架构、Wayland X 的比较等。

2.       知识背景

主要介绍 Linux 下的图形栈(要完全理解 Wayland,需要深刻理解 Linux 图形栈);

另外也会介绍在 Wayland 中频繁使用的 C 语言技术。

3.       Wayland 源码解析

1)  代码框架

分析 Wayland 代码的目录结构,各个主要模块的功能。

2)  协议分析

由于 Wayland 首先是一个协议(compositor clients 通信),所以这里分析如何解析协议(XML文件),如何用 C 语言实现这些协议。

3)  Wayland 中工具函数(工具类)的实现

分析Wayland 中使用的主要工具函数(工具类),如 wl_listwl_arraywl_mapwl_connection等。

4)  Server 端的实现(也就是 Compositor 的实现)

分析 Server 端的主要实现,包含两部分:wayland 库的实现和 Weston 的实现(Wayland Compositor 的参考实现)。

5)  Client 端的实现

重点分析 Wayland client 库。

6)  Egl 实现

主要分析 Egl surface wayland buffer对象之间的转换。

会对 egl OPEN GLES 作一些简单介绍。

7)  执行流程

分析 Compositor Client 的执行流程。

8)  通信机制

分析 Composirot Client 之间如何进行通信。

9)  输入事件处理流程

分析输入事件的处理流程,如键盘事件、鼠标事件、Touch 事件等。

10)  图形输出处理流程

包括两部分:通过共享内存绘制图形与通过 DRM 绘制图形

11)  DND Drag & drop)处理

       分析 Wayland 中的 DND 处理。