【OpenGL】LINUX查看OpenGL信息
是的,Mesa 3D Graphics Library(通常简称为 Mesa)是一个开源的图形软件库,它实现了 OpenGL、Vulkan、OpenGL ES 和其他图形相关的 API。在 Linux 中,OpenGL 通常通过 Mesa 3D 图形库来实现,Mesa 包含了开源的图形驱动程序,支持多种图形硬件。此外,如果系统是双显卡系统(同时拥有集成显卡和独立显卡),需要确保正确的驱动程序和内核
(base) :~/Document/gstreamer$ glxinfo | grep OpenGL version
grep: version: 没有那个文件或目录
Command 'glxinfo' not found, but can be installed with:
sudo apt install mesa-utils
安装工具
mesa-utils 包含了一些与 Mesa 3D 图形库相关的实用程序,例如 glxinfo 和 mesainfo,这些工具可以用来查询和诊断图形硬件和驱动程序的信息。
(base) ~/Document/gstreamer$ sudo apt install -y mesa-utils
[sudo] vagrant 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列【新】软件包将被安装:
mesa-utils
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 63 个软件包未被升级。
需要下载 34.2 kB 的归档。
解压缩后会消耗 150 kB 的额外空间。
获取:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 mesa-utils amd64 8.4.0-1build1 [34.2 kB]
已下载 34.2 kB,耗时 0秒 (112 kB/s)
正在选中未选择的软件包 mesa-utils。
(正在读取数据库 ... 系统当前共安装有 232549 个文件和目录。)
准备解压 .../mesa-utils_8.4.0-1build1_amd64.deb ...
正在解压 mesa-utils (8.4.0-1build1) ...
正在设置 mesa-utils (8.4.0-1build1) ...
正在处理用于 man-db (2.9.1-1) 的触发器 ...
查看 OpenGL 的版本信息
可以作为驱动程序是否正确安装的一个指标
(base) :~/Document/gstreamer$ glxinfo | grep "OpenGL version"
OpenGL version string: 3.1 Mesa 21.2.6
glxinfo | grep "version"
这个命令会列出所有包含 “version” 字样的行,通常包括以下几个部分:
OpenGL 版本:显示当前系统支持的 OpenGL 版本。
GLX 版本:显示 GLX 版本的信息,GLX 是用于在 X Window System 上实现 OpenGL 的扩展。
GLSL 版本:显示 OpenGL Shading Language(GLSL)的版本,这是用于编写 OpenGL 着色器的编程语言。
(base) :~/Document/gstreamer$ glxinfo | grep "version"
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
Max core profile version: 4.5
Max compat profile version: 3.1
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL core profile version string: 4.5 (Core Profile) Mesa 21.2.6
OpenGL core profile shading language version string: 4.50
OpenGL version string: 3.1 Mesa 21.2.6
OpenGL shading language version string: 1.40
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 21.2.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
GL_EXT_shader_implicit_conversions, GL_EXT_shader_integer_mix,
查图形驱动是否已经正确安装和配置:
安装了 mesa-utils
之后,通过以下方法来检查图形驱动是否已经正确安装和配置:
检查显卡驱动和硬件加速是否正常工作
使用 glxinfo
命令:这个命令提供了关于 OpenGL 和 X Window System 的信息,可以用来检查显卡驱动和硬件加速是否正常工作。在终端中输入以下命令:
glxinfo | grep "direct rendering"
# direct rendering: Yes
如果输出显示 “direct rendering: Yes”,则表示硬件加速正在工作,并且图形驱动已经正确安装和配置。
检查 OpenGL 版本
通过 glxinfo
命令来查看 OpenGL 的版本信息,这也可以作为驱动程序是否正确安装的一个指标。输入以下命令:
glxinfo | grep OpenGL
如果能够显示 OpenGL 版本信息,并且版本与你的显卡兼容,这通常意味着驱动程序已经正确安装。
OpenGL vendor string: Mesa/X.org
OpenGL renderer string: llvmpipe (LLVM 12.0.0, 256 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 21.2.6
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.1 Mesa 21.2.6
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 21.2.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
根据glxinfo
命令输出,这里是一些关键的 OpenGL 和显卡相关信息:
-
OpenGL 供应商字符串:
OpenGL vendor string: Mesa/X.org
- 这表明你的 OpenGL 功能是由 Mesa 3D 图形库提供的,它是 X.org 项目的一部分。
-
OpenGL 渲染器字符串:
OpenGL renderer string: llvmpipe (LLVM 12.0.0, 256 bits)
- 这表明你正在使用 llvmpipe,这是一个纯软件的 OpenGL 渲染器,它是 Mesa 的一部分。它不依赖于任何特定的硬件,而是在 CPU 上执行所有渲染工作。这意味着你的系统可能没有使用专用的图形处理单元(GPU)来渲染 OpenGL 内容。
-
OpenGL 核心配置文件版本:
OpenGL core profile version string: 4.5 (Core Profile) Mesa 21.2.6
- 这表明你的系统支持 OpenGL 4.5 核心配置文件。
-
OpenGL 核心配置文件着色语言版本:
OpenGL core profile shading language version string: 4.50
- 这表明你的系统支持 OpenGL 着色语言 4.50 版本。
-
OpenGL 版本字符串:
OpenGL version string: 3.1 Mesa 21.2.6
- 这表明你的系统支持 OpenGL 3.1 版本。
-
OpenGL 着色语言版本:
OpenGL shading language version string: 1.40
- 这表明你的系统支持 OpenGL 着色语言 1.40 版本。
-
OpenGL ES 配置文件版本:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 21.2.6
- 这表明你的系统支持 OpenGL ES 3.2 版本。
-
OpenGL ES 着色语言版本:
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
- 这表明你的系统支持 OpenGL ES GLSL ES 3.20 版本。
这些信息表明系统配置了 Mesa 的软件渲染器,而不是硬件加速的 GPU 渲染器。期望使用硬件加速,需要检查你的显卡驱动程序是否正确安装,或者你的系统是否支持硬件加速。如果正在使用的是集成显卡或者没有专用 GPU,那么 llvmpipe 软件渲染器可能是唯一的选择。
查看显卡驱动信息:
使用 lshw
命令可以查看显卡的详细信息,显示显卡的型号和正在使用的驱动程序包括当前使用的驱动。输入以下命令:
sudo lshw -c video
这将列出显卡的详细信息,包括型号和使用的驱动。
*-display
description: VGA compatible controller
product: NVIDIA Corporation
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
configuration: driver=nvidia latency=0
resources: iomemory:600-5ff iomemory:620-61f irq:213 memory:83000000-83ffffff memory:6000000000-61ffffffff memory:6200000000-6201ffffff ioport:6000(size=128) memory:84000000-8407ffff
*-display UNCLAIMED
description: VGA compatible controller
product: Intel Corporation
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 04
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list
configuration: latency=0
resources: iomemory:620-61f iomemory:400-3ff memory:6204000000-6204ffffff memory:4000000000-400fffffff ioport:7000(size=64) memory:c0000-dffff memory:4010000000-4016ffffff memory:4020000000-40ffffffff
lshw
命令的输出,它显示了系统中的显示适配器信息。这段输出包含了两个部分,分别描述了两个不同的显示适配器:
-
NVIDIA Corporation 的 VGA compatible controller:
- 产品:NVIDIA Corporation
- 供应商:NVIDIA Corporation
- 物理 ID:0
- 总线信息:pci@0000:01:00.0
- 版本:a1
- 宽度:64 bits
- 时钟:33MHz
- 配置:已安装驱动程序
nvidia
,延迟为 0 - 资源:分配了 I/O 内存、I/O 端口和内存资源
-
Intel Corporation 的 VGA compatible controller:
- 产品:Intel Corporation
- 供应商:Intel Corporation
- 物理 ID:2
- 总线信息:pci@0000:00:02.0
- 版本:04
- 宽度:64 bits
- 时钟:33MHz
- 配置:未声明(UNCLAIMED),延迟为 0
- 资源:分配了 I/O 内存、I/O 端口和内存资源
从输出中可以看出:
- NVIDIA 控制器已经安装了驱动程序(
driver=nvidia
),这意味着它已经被系统识别并配置了相应的驱动。 - Intel 控制器的状态是 “UNCLAIMED”,这通常意味着没有安装或激活相应的驱动程序,或者系统没有正确识别它。这可能是因为这是一个集成显卡,而你正在使用一个没有集成显卡驱动的 Linux 发行版。
如果希望使用 Intel 集成显卡,需要安装相应的驱动程序。对于大多数现代 Linux 发行版,Intel 驱动程序通常是预装的,或者可以通过系统的包管理器轻松安装。使用以下命令来安装 Intel 显卡驱动:
sudo apt update
sudo apt install xserver-xorg-video-intel
安装后,需要重新启动系统以使更改生效。如果系统仍然无法识别 Intel 控制器,需要检查 Linux 发行版的文档,或者寻求社区支持以获取帮助。
检查显卡硬件信息:
使用 lspci
命令来查看显卡的硬件信息。将显示正在使用的驱动程序,输入以下命令:
lspci -vnn | grep VGA -A 12
这将显示显卡的详细信息,包括制造商和型号。
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:a788] (rev 04) (prog-if 00 [VGA controller])
Subsystem: Lenovo Device [17aa:3cf2]
Flags: bus master, fast devsel, latency 0, IRQ 255
Memory at 6204000000 (64-bit, non-prefetchable) [size=16M]
Memory at 4000000000 (64-bit, prefetchable) [size=256M]
I/O ports at 7000 [size=64]
Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
Capabilities: <access denied>
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:a71d] (rev 01)
Subsystem: Lenovo Device [17aa:3829]
Flags: bus master, fast devsel, latency 0, IRQ 255
Memory at 6205100000 (64-bit, non-prefetchable) [size=128K]
--
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:28e0] (rev a1) (prog-if 00 [VGA controller])
Subsystem: Lenovo Device [17aa:3cf2]
Physical Slot: 1
Flags: bus master, fast devsel, latency 0, IRQ 213
Memory at 83000000 (32-bit, non-prefetchable) [size=16M]
Memory at 6000000000 (64-bit, prefetchable) [size=8G]
Memory at 6200000000 (64-bit, prefetchable) [size=32M]
I/O ports at 6000 [size=128]
Expansion ROM at 84000000 [virtual] [disabled] [size=512K]
Capabilities: <access denied>
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
这段输出是从 lspci
命令中得到的,它列出了系统中的 PCI 设备信息。这里特别关注了两个 VGA compatible controller(显卡):
-
Intel Corporation Device [8086:a788]:
- 这是一个集成在 Intel 芯片组中的 VGA compatible controller,通常是一个集成显卡。
- 它有两块内存区域分配给它,一块是 16MB 的非预取内存,另一块是 256MB 的预取内存。
- 它还分配了 64 位 I/O 端口。
- 有一个 Expansion ROM,但是目前是禁用状态。
-
NVIDIA Corporation Device [10de:28e0]:
- 这是一个独立的 NVIDIA VGA compatible controller,通常是一个更强大的独立显卡。
- 它有三块内存区域分配给它,一块是 16MB 的 32 位非预取内存,一块是 8GB 的 64 位预取内存,还有一块是 32MB 的 64 位预取内存。
- 它还分配了 128 位 I/O 端口和一个 Expansion ROM。
- 这个设备正在使用
nvidia
内核驱动,相关的内核模块包括nvidiafb
,nouveau
,nvidia_drm
,nvidia
。
从这些信息中,我们可以看出:
- 系统同时拥有集成显卡(Intel)和独立显卡(NVIDIA)。
- 独立显卡正在使用 NVIDIA 专有驱动(
nvidia
),这意味着它应该能够提供 3D 加速和优化的图形性能。 - 集成显卡目前没有被使用(没有提到使用的驱动),这可能是因为系统默认使用了独立显卡。
如果需要使用集成显卡或者想要在集成显卡和独立显卡之间切换,需要进行一些额外的配置。例如,如果使用 Intel 集成显卡,需要禁用 NVIDIA 显卡或者在 BIOS 中进行设置。
此外,如果系统是双显卡系统(同时拥有集成显卡和独立显卡),需要确保正确的驱动程序和内核模块已经安装,并且系统配置正确,以便在需要时能够使用合适的显卡。在某些情况下,还需要安装或更新 nvidia-prime
包,以便在 NVIDIA 显卡和集成显卡之间切换。
运行 glxgears
:
glxgears
是一个简单的 OpenGL 程序,可以用来测试 OpenGL 驱动。安装 mesa-utils
后,直接运行glxgears
来看它的运行情况。输入以下命令:
glxgears
如果 glxgears
能够正常运行并显示动画,这通常意味着图形驱动工作正常。
以上方法可以验证图形驱动是否已经正确安装和配置。
Linux 系统支持的多种图形技术
不是所有的 Linux 系统都使用 OpenGL 组件驱动来渲染图形。Linux 系统支持多种图形技术,包括但不限于:
-
OpenGL:是一个跨语言、跨平台的应用程序编程接口(API),用于渲染2D和3D矢量图形。OpenGL 通常用于游戏和图形密集型应用程序。在 Linux 中,OpenGL 通常通过 Mesa 3D 图形库来实现,Mesa 包含了开源的图形驱动程序,支持多种图形硬件。
-
Vulkan:是一个现代的高性能图形和计算 API,设计用于跨平台使用。Vulkan 提供了对图形硬件的更直接控制,以提高性能和效率。它也是开源的,并且在 Linux 系统中得到了广泛的支持。
-
Wayland:是一个相对较新的显示服务器协议,旨在取代传统的 X.Org Server。Wayland 旨在提供更好的性能和安全性,并且它支持 OpenGL 和 Vulkan。
-
X.Org Server:是 Linux 系统上传统的显示服务器,它使用 X Window System 协议。X.Org Server 支持多种图形硬件,并且可以利用 OpenGL 通过 Mesa 3D 图形库来渲染图形。
-
Direct Rendering Manager (DRM):是 Linux 内核中的一个组件,它提供了对图形硬件的直接访问,用于加速图形渲染。DRM 通常与 Mesa 和 X.Org Server 一起使用。
-
GNOME/KDE 等桌面环境:这些桌面环境提供了用户界面和图形界面的实现,它们通常会利用上述技术来渲染图形。
在 Linux 系统中,图形驱动程序可以是开源的,也可以是专有的。例如,NVIDIA 提供了专有的驱动程序,而 AMD 和 Intel 的开源驱动程序通常包含在 Mesa 3D 图形库中。不同的 Linux 发行版可能会默认使用不同的图形技术堆栈,用户也可以根据需要选择和安装不同的图形驱动程序和库。
Mesa 包含了开源的图形驱动程序,支持多种图形硬件?
是的,Mesa 3D Graphics Library(通常简称为 Mesa)是一个开源的图形软件库,它实现了 OpenGL、Vulkan、OpenGL ES 和其他图形相关的 API。Mesa 允许软件开发者编写可以在各种硬件上运行的图形应用程序,而不需要关心底层硬件的具体细节。
以下是 Mesa 的一些关键特点:
- 开源:Mesa 是完全开源的,遵循多种开源许可证,这使得社区可以共同参与开发和改进。
- 跨平台:虽然 Mesa 最初是为 Linux 开发的,但它也支持其他操作系统,包括 FreeBSD、OpenBSD、NetBSD、DragonFly BSD、Solaris 和 Windows。
- 硬件支持:Mesa 提供了对多种图形硬件的支持,包括但不限于 AMD、Intel、NVIDIA、Broadcom、ARM 和 VMware 的图形处理器。Mesa 包括了专门为这些硬件编写的驱动程序。
- OpenGL 实现:Mesa 提供了 OpenGL 的完整实现,这是最广泛使用的图形 API 之一。它支持从旧版本的 OpenGL 到最新的核心-profile 版本。
- Vulkan 支持:Mesa 也包括了对 Vulkan API 的支持,这是一个较新的、用于高性能 3D 图形的跨平台 API。
- 软件渲染器:Mesa 包括了软件渲染器,如 llvmpipe 和 softpipe,它们可以在没有专用图形硬件的系统上模拟 OpenGL 操作。
- 集成开发环境:Mesa 项目还包括了各种开发和调试工具,如 glxinfo、glxgears 和 others,这些工具对于开发和优化图形应用程序非常有用。
- 社区驱动:Mesa 由一个活跃的社区维护,这个社区包括个人开发者和来自硬件供应商的开发者。
Mesa 是许多 Linux 发行版的默认图形库,因为它提供了对开源图形驱动程序的支持,这些驱动程序可以自由地与系统其他部分集成和分发。此外,对于专有驱动程序不可用或不兼容的硬件,Mesa 提供了一个可靠的备选方案。
图形硬件
图形硬件是指计算机中用于处理和渲染图形输出的物理组件。这些组件协同工作,以在显示器上生成图像和动画。图形硬件的主要组成部分包括:
- 图形处理单元(GPU):
- GPU 是专门设计用来快速执行图形和图像处理任务的微处理器。它通常包含多个处理核心,能够并行处理大量数据,从而提高图形渲染的效率。
- 视频内存(VRAM):
- 这是 GPU 专用的内存,用于存储图形数据,如纹理、模型和渲染的图像。VRAM 的速度通常比系统主内存(RAM)快,以便 GPU 能够快速访问和处理图形数据。
- 渲染管线:
- 渲染管线是 GPU 内部的一系列处理阶段,包括顶点处理、光栅化、像素处理等,用于将三维模型转换成二维图像。
- 显示控制器:
- 显示控制器负责管理 GPU 和显示器之间的数据传输。它确保图像数据正确地同步到显示器上。
- 数字模拟转换器(DAC):
- DAC 用于将数字信号转换为模拟信号,以便传统的 CRT 显示器能够显示图像。现代的液晶显示器(LCD)通常不再需要 DAC,因为它们可以直接处理数字信号。
- 冷却系统:
- 高性能的 GPU 可能会产生大量热量,因此需要有效的冷却系统来防止过热。这可能包括风扇、散热片或液冷系统。
- 接口(如 PCIe):
- GPU 通过主板上的接口(如 PCIe 插槽)与系统的其余部分通信。这些接口提供了必要的电气连接和数据传输通道。
- 集成图形:
- 许多现代处理器(如 Intel 和 AMD 的某些型号)在 CPU 芯片上集成了图形处理功能。这种集成图形通常共享系统 RAM,并且性能可能低于独立 GPU,但对于日常使用和一些不太要求图形性能的应用来说已经足够。
图形硬件的性能直接影响到计算机图形应用程序的运行效果,包括游戏、视频编辑、3D 建模和其他图形密集型任务。高性能的图形硬件可以提供更快的渲染速度、更高的分辨率和更复杂的视觉效果。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)