图形界面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

  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
EGL、GLX、Xegl、XGL和XGLX都与OpenGL和X Window System(X11)之间的图形渲染和窗口管理有关。这些是不同的API和扩展,用于在图形应用程序和硬件之间进行通信和协调。 1. EGL(Embedded-System Graphics Library)是一个用于嵌入式系统的图形库,它提供了一个标准的接口,使应用程序能够与底层图形驱动程序进行交互。EGL可以用于管理窗口系统和设备上下文,以及在OpenGL ES等图形API之间进行切换。 2. GLX(OpenGL Extension to the X Window System)是一个在X11窗口系统上使用OpenGL的扩展。它允许应用程序使用OpenGL渲染图形,并将结果显示在X窗口中。GLX提供了与X Server的交互,以及创建和管理OpenGL上下文的功能。 3. Xegl是一种将EGL与X Window System集成的方法。它允许应用程序使用EGL进行图形渲染,并在X窗口中显示结果。这种集成可以提供更好的性能和更高的灵活性。 4. XGL是一个用于在X Window System上使用OpenGL的实现。它是一种通过将OpenGL命令转换为X协议来实现的技术,在服务器端执行OpenGL渲染。 5. XGLXX11 Graphics Library Extension)是用于在X Window System上使用OpenGL的另一种扩展。它提供了X Server和OpenGL之间传递图形的功能,用于加速OpenGL渲染。 这些API和扩展提供了在X Window System上使用OpenGL进行图形渲染不同方法。开发人员可以根据特定的需求选择合适的API或扩展来实现他们的图形应用程序。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值