图形界面GUI相关概念GLX/Wayland/X11/DRM/DRI

1. GUI图形界面是什么

GUI是graphical user interface的缩写,图形用户接口,实现了基本的WIMP(windows,icons,menus,pointer)。一个GUI的基本组成:display server实现windowing system。参考下图:
在这里插入图片描述

1.1 windowing system

windowing system:管理不同的display screens的软件。是一种GUI的实现。

下表是常见的windowing system,我主要感兴趣的是Wayland和X Window System

类unix系统Windows NT家族系统Web其他
Quartz Compositor(Mac OS X)DWM(Desktop Window Manager)(微软Vista及之后系统用的视窗系统)DojoMiniGUI
WaylandReactOS ExplorerExtJSDM
X Window SystemClassic ShellVWS
W Window SsytemTalisman Desktop

1.1.1 display server

windowing system中主要的组成是display server(或者window server,compositor)。任何用来在窗口中显示GUI界面的软件应用,都是该display server的一个client客户端

display server与client之间的交互协议叫做display server communications protocol

display server
X.Org server(主要是类unix)
Wayland(主要是类unix)
Mir(主要是类unix)
SurfaceFlinger(谷歌安卓)
Quartz Compositor(苹果MacOS)
Desktop Window Manager(微软)

1.1.2 display server communications protocols

X11

X.Org server跑在类unix系统kernel之上,用于接收用户数据并处理然后传给其clients,也用于接收clients传来的数据,进行处理影响合成compositing,并将数据传给kernel模块三者之一:DRM,gem,KMS drvier它是通过将数据写入framebuffer,然后framebuffer中的数据通过GLX传给相关的screen显示

  • GLX:opengl extension to the X window system。是OpenGL与X Window System之间的连接桥梁。

X.Org是一种X Window System实现,但其实现还依赖于另一个软件compositing window manager来做影响合成,比如Mutter和KWin,实现X11客户端库可以依赖于Xlib和XCB。

下图是X.Org server与X clients(比如Amarok)通过X11协议来通信交互。
在这里插入图片描述

通常,X、X11、X Window System的说法可以混为一谈,都代表一种windowing system,那就是X11系统,而X.Org是X Window System中display server的一种实现,通常也叫它X Server

在这里插入图片描述

GLX

GLX(OpenGL Extension to the X Window System)是指OpenGL在X Window System上的扩展,它允许OpenGL程序与X Window System进行交互,并在X Window System中显示图形。GLX最初是由SGI(Silicon Graphics International)开发的,后来成为了OpenGL的标准扩展之一。目前,GLX已经成为了Linux和Unix系统中OpenGL标准的一部分,提供了一种可靠且高效的图形编程方式。

GLX最初的实现是GLX API,叫GLcore,是在X系统中加载了一个mesa渲染器来渲染opengl命令。

随着DRI(direct rendering infrastructure)发展,可以通过direct render方式来加速opengl命令。后来又有DRI2(通过KMS,kernel mode-setting内核模块)替换了DRI。再后来,linux kernel3.12出现render node直接渲染。

下图是通过DRM(direct rendering manager)直接访问到显卡来做处理
在这里插入图片描述

早期通过DRM API,是通过DRM设备/dev/dri/cardX来处理的,后来kernel中合入了render node,/dev/dri/renderDX。

linux kernel3.12开始render node被合入。wayland是通过EGL来direct rendering
在这里插入图片描述

wayland

wayland也是一种display server。同X11类似,wayland也需要依赖wayland compositors,比如Weston、mutter、KWin等。

Wayland compositors与Wayland Clients之间交互协议是Wayland display server protocol。该协议定义client可以通过EGL rendering API来直接访问framebuffer。

在这里插入图片描述

1.2 window manager

什么是window manager?GUI中,在window system中,负责控制视窗位置、外表等的系统软件。大部分window manager具备提供desktop环境的能力。

Gnome、Xfce、KDE都是window manager,不过它们都是工作在X display server上,所以又都是X window manager

window manager描述实例
X window manager使用X window systemGNOME、KDE、Xfce
Microsoft windoes微软从windows2.0开始就提供了集成window manger
ChromeOSAsh

1.2.1 gnome/kde desktops

GNOME,KDE和Xfce desktops是Linux环境下的desktop。display server比如X11只提供基本的绘画能力,然后client通过Xlib和XCB等库来作用X11,具备了不同的视觉能力。

如何开发一个GUI?,通过widget toolkits,比如GTK和Qt

开发套件窗口管理器
GTKGNOME,Xfce
QtKDE

1.2.2 display manager

不同的desktop可能使用不同的display manager(更准确的应该叫做graphical login manager,图形登录系统)。

window managerdisplay manager
GNOMEgdm3
Xfcelightdm
KDEkdm,sddm
LXDELXDM

display manager提供在X server上(或远程)启动一个session会话的功能。

下图示意了基本的框架理解
在这里插入图片描述

【参考文档】

  1. https://en.wikipedia.org/wiki/Windowing_system#List_of_windowing_systems

  2. https://unix.stackexchange.com/questions/345344/difference-between-xorg-and-gnome-kde-xfce

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

03_线程间通信

面试题:两个线程打印 两个线程,一个线程打印1-52,另一个打印字母A-Z打印顺序为12A34B...5152Z,要求用线程间通信 public class Demo01 {public static void main(String[] args) {ShareData05 shareData05 new ShareData05();new…

分布式事务处理方案及分布式锁相关

​ 本文偏理论 一、事务处理 1、事务处理的四个特性ACID Atomicity 原子性: 对于数据库的修改,全部执行or全部不执行 Consistency 一致性: Isolation 隔离性 : 亦称为串行化,防止事务间操作混淆,需要串行化或者序列化请求,使…

隐私权限是什么

导读: 隐私权在现代社会对于人们而言是重要的人格权,而随着互联网技术的发展,实践中侵犯隐私权的行为很常见。那么隐私权限是什么?侵犯隐私权的行为有哪些?侵犯他人隐私权要负什么法律责任?接下来将由找法…

使用docker搭建RocketMQ(非集群搭建官方镜像)

之前在使用 RocketMQ 官方的包在搭建的时候,发现好多问题,什么修改内存大小,然后启动 broker 报错,类似 service not available now, maybe disk full 等等… 最后决定还是重新用 docker 搭建下,感觉这样子玩坏了&…

微信仿真平台的设计和实现(设计+源码)_kaic

摘要 现如今,科技的发展带动着环保方式的更新,Internet是一个不断的开展和不停的扩充数据潮流,有了它,我们可以快速、容易地在世界的任何角落进行沟通,获取更多的信息与资料。Internet可以提供大量信息资源和文案数据库…

全国各省份影像下载地址(11级别)

安徽省https://pan.baidu.com/s/1fMuWhVZFvSH1UlCGU1bPpA?pwdeasy澳门特别行政区https://pan.baidu.com/s/1aU2D4o2bfeHTJTb6AkUtVA?pwdeasy北京市https://pan.baidu.com/s/1eaNzAWm1pUx_rjhD_wHHhA?pwdeasy福建省百度网盘 请输入提取码甘肃省https://pan.baidu.com/s/1mAqf…

时序预测相关技术分享

时序预测相关技术分享 时序预测是指对时间序列数据进行预测,以预测未来的趋势或行为。在实际生产和应用中,时序预测广泛应用于金融、电力、交通等领域。时序预测可以帮助人们更好地理解和掌握未来的趋势和规律,从而做出更明智的决策。 时序…

南大通用数据库-Gbase-8a-学习-34-gcdump(导出数据库对象定义)

目录 一、测试环境 二、介绍 三、命令帮助 四、参数介绍 1、--print-defaults (1)含义 (2)例子 2、--connect_timeout (1)含义 (2)例子 3、-A, --all-databases &#xf…

10款比较好用的网页设计工具

网页设计软件的轻量化和在线协作已成为当前网页制作软件的发展趋势。网页设计并不容易,易于使用的网页UI设计软件更难找到。随着网络的快速发展,网站迅速崛起,网页设计也很受欢迎。网页设计软件即时设计是一种在线协作设计工具,深…

密歇根大学Python系列之一:零基础 Python 入门

密歇根大学计算机专业注重将计算机科学理论与实践相结合,旨在帮助学生全面掌握计算机科学的基础理论和实践技能: 1.计算机程序设计:编程技能和常见编程语言,如C和Java和Python等; 2.数据结构和算法:数据结…

不同局域网下使用Python自带HTTP服务进行文件共享「端口映射」

文章目录 1. 前言2. 视频教程3. 本地文件服务器搭建3.1 python的安装和设置3.2 cpolar的安装和注册 4. 本地文件服务器的发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6. 结语 转载自内网穿透工具的文章:Python一行代码实现文件共享【内网穿透公网访问…

SpringBoot的配置和日志

1.配置文件的作用和意义 配置文件中配置整个项目中所有重要的数据,比如: 1.数据库的连接信息(包含用户名和密码的设置); 2.项目的启动端口; 3.第三方系统的调用秘钥等信息; 4.用于发现和定位问…

如何利用 GPT 开发智能应用?微软提出这九大原则

毫无疑问,GPT 的出现以日新月异的速度改写了软件开发的工作方式。 兴奋,也许也有点焦虑。作为开发人员,如何在 GPT 时代与人工智能协作?在「万物皆有副驾驶」的年代,如何划定分工边界,让 GPT 成为开发人员…

如何使用命令行添加配置码云仓库SSH秘钥-git仓库也一样

使用命令行添加配置码云仓库SSH秘钥 为什么要如何使用命令行添加配置码云仓库SSH秘钥?生成密钥你可以按如下命令来生成 sshkey:可以参考下图执行指令 添加密钥登录你的码云,鼠标移入头像,设置。点击 SSH公钥,打开配置页面&#x…

【LeetCode: 1143. 最长公共子序列 | 暴力递归=>记忆化搜索=>动态规划】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

如何在比特币系统内创造人工生命

信息来源:coingeek.com 自2015年以来,关于比特币能否进行复杂计算以及比特币是否“图灵完备”的争论一直在持续。不幸的是,现在存在着一种流传甚广的谬论,有人说比特币并非图灵完备的,它不能像以太坊区块链那样进行复杂…

第四章 使用Maven:IDEA环境

1、创建 Project2、开启自动导入 TIP 各个 IDEA 不同版本在具体操作方面存在一定差异,这里我们以 2019.3.3 版本为例进行演示。其它版本大家灵活变通即可。 第一节 创建父工程 创建 Project 开启自动导入 创建 Project 后,IDEA 会自动弹出下面提示…

ROS学习5:ROS常用组件

【Autolabor初级教程】ROS机器人入门 1. TF 坐标变换 背景 现有一移动式机器人底盘,在底盘上安装了一雷达,雷达相对于底盘的偏移量已知,现雷达检测到一障碍物信息,获取到坐标分别为(x,y,z),该坐标是以雷达为参考系的…

快速下载VScode并配置Python运行环境【详细教程】

快速下载VScode并配置Python运行环境【详细教程】 博主:命运之光 目录 快速下载VScode并配置Python运行环境【详细教程】前言下载vscode第一步vscode官网下载第二步点击下载![请添加图片描述](https://img-blog.csdnimg.cn/1d76c427314b4ddcbd350e0a7e5449d5.png)第…

数据湖Iceberg-存储结构(2)

文章目录 存储结构数据文件 data files表快照 Snapshot清单列表 Manifest list清单文件 Manifest file 数据湖Iceberg-简介(1) 数据湖Iceberg-存储结构(2) 数据湖Iceberg-Hive集成Iceberg(3) 数据湖Iceberg-SparkSQL集成(4) 数据湖Iceberg-FlinkSQL集成(5) 数据湖Iceberg-Flink…