[Feelings & Sharing] 关于wayland的浅薄理解或者说猜测
Tofloor
poster avatar
PurestAsh
deepin
2024-04-07 14:21
Author
  1. 首先是内核,内核会对硬件进行抽象。
  2. 对于图形硬件,内核抽象出了DRM (dierct renderring manager) 。以及他的子模块KMS( kernel mod setting) 。DRM和KMS都是属于内核空间的。
  3. 对于用户空间,有libdrm库封装了对DRM的访问。
  4. 然后就是OpenGL和vullkan。这2个是图形协议,独立于操作系统。
  5. mesa就是OpenGL和vullkan在linux上的具体实现,也可以说是对libdrm的封装。
  6. 然后就是各个toolkit 如qt,gtk等UI框架。他们提供了对OpenGL的封装,向我们提供了button和label等UI小部件。
  7. 然后用户再用toolkit开发应用程序。
  8. 用户也可以不使用ToolKit,直接使用OpenGL绘图,比如:游戏。

问题来了:这些应用程序最终都会通过libdrm在显存中形成一张一张的"像素图",但是我屏幕只有一个。这么多像素图到底应该怎么放?谁在前谁在后?谁又全屏呢?

这个时候就需要wayland-compositor了。

  1. wayland-compositor接收鼠标和键盘事件,然后通过KMS直接控制DRM。给各个"像素图"加上边框,确定各个"像素图"的具体显示位置,然后三张压成一张~~。
  2. 同时各个应用程序也可以通过libwayland-client库和wayland-compositor通信,告诉它我窗口的一些特殊请求,比如我想放在固定的位置,我不要边框.....等。

欢迎大佬指正!

1024px-Wayland_display_server_protocol.svg.png

Reply Favorite View the author
All Replies
deepin
2024-04-07 14:30
#1

解剖Qt库,DTK研发团队也要很花时间。

Reply View the author
jjcui8595
deepin
2024-04-07 14:40
#2

这还浅呀joy like

Reply View the author
把一切操作变成GUI
deepin
Backbone of ecological co-construction group
2024-04-08 11:29
#3

写的挺好,让人一下子就能看懂

Reply View the author