Android图形系统之X11、Weston、Wayland、Mesa3D、ANGLE、SwiftShader介绍(十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

1.前言

本篇目的:理解X11、Weston、Wayland、Mesa3D、ANGLE、SwiftShader框架和协议。

2.X11、Weston、Wayland、Mesa3D、ANGLE、SwiftShader功能介绍

  • X11

    X11是一种计算机图形显示协议,也被称为X Window System。它是最早的用于Linux和类Unix系统上的图形用户界面的协议,负责管理图形显示和用户输入设备,以及提供窗口管理和图形效果等功能。

    • Wayland

      Wayland是一个新一代的图形显示协议,旨在替代X Window System(即X11)。它提供了更直接、更高效、更安全的图形处理,能够实现基于内核的窗口管理和更好的触摸屏支持。

      • Weston

        Weston是一个开源的以Wayland协议为基础的窗口管理器(compositor),用于管理应用程序窗口、输入设备和图形显示。它是Wayland项目的参考实现之一,旨在提供现代的、灵活的、可扩展的图形显示架构。

        • Mesa3D

          Mesa3D是一个开源的图形库软件堆栈,用于在软件和硬件之间提供OpenGL和其他图形API的实现。它提供了一系列的图形驱动程序,包括软件渲染器和硬件加速的驱动程序,可以在不同的操作系统和图形显示系统上使用。

          • ANGLE

            ANGLE 是一个开源的跨平台的 OpenGL ES 到 OpenGL 的翻译器,它允许使用 OpenGL ES 的应用程序在 Windows 平台上运行,通过将 OpenGL ES API 调用转换为相应的 OpenGL API 调用。

            ANGLE 的目标是提供一个与标准 OpenGL ES 2.0 和 3.0 兼容的实现,并且可在 Windows 上运行,从而使得开发者可以在 Windows 平台上开发和测试 OpenGL ES 应用程序。

            • SwiftShader

              SwiftShader是一个跨平台的高性能软件渲染器,用于在不支持硬件加速的设备上进行图形渲染。它模拟了图形硬件的功能,包括OpenGL ES和Direct3D,以提供流畅的图形渲染和高效的图形处理。

              2.X11、Weston、Wayland、Mesa3D、SwiftShader区别

              • 1.X11和Wayland

                X11和Wayland都是用于图形显示的协议或系统,但它们有不同的设计理念和实现方式。

                X11采用了客户端-服务器模型,而Wayland更加直接和高效。

                • 2.Weston是Wayland协议

                  Weston是Wayland协议的一个实现,用于窗口管理,与X11和Mesa3D配合使用来实现图形显示和渲染。

                  • 3.Mesa3D与X11和Wayland

                    Mesa3D与X11和Wayland都相关联,它提供了OpenGL等图形API的实现,可以与不同的图形显示系统配合使用。

                    • 4.SwiftShader

                      SwiftShader可以被用于在不支持硬件加速的设备上进行图形渲染,它在某种程度上可以替代Mesa3D的部分功能,但更专注于软件渲染和跨平台性能。

                      3.总结

                      1.X11是传统的Unix图形系统。

                      2.Wayland是X11的替代方案。

                      3.Weston是Wayland协议的实现。

                      4.Mesa3D提供了OpenGL、Vulkan API的软件实现。

                      5.SwiftShader是用于不支持硬件加速设备上的软件渲染。

                      4.查看Linux主机是X11协议?还是Wayland协议?

                      # echo $XDG_SESSION_TYPE
                      x11
                      

                      我的主机是XUbuntu22.04,可知还是用的旧的显示协议X11,而不是Wayland协议。