原文:https://www.binarytides.com/linux-get-gpu-information/
译文:
您需要找到正确的型号和供应商的图形卡在您的系统上,能够安装适当的驱动程序,并使硬件功能正常。大多数现代linux发行版可以检测各种显卡,但并不总是有最佳的驱动程序。
因此,如果您拥有像Nvidia或Ati这样的外部显卡,那么您需要查找模型名称/编号,然后在线查找进一步的详细信息。当然,如果你有购买电脑时附带的硬件手册,就会容易得多。但是这里我们将使用命令来找出相同的信息。
硬件细节
这只是一些需要学习的命令。第一个是lscpi,下面是一个快速示例,展示如何获取图形单元(也称为vga卡或视频卡)的详细信息。
$ lspci -vnn | grep VGA -A 12
00:02.0 VGA compatible controller [0300]: Intel Corporation 82G35 Express Integrated Graphics Controller [8086:2982] (rev 03) (prog-if 00 [VGA controller])
Subsystem: Intel Corporation Device [8086:d701]
Flags: bus master, fast devsel, latency 0, IRQ 44
Memory at e0200000 (32-bit, non-prefetchable) [size=1M]
Memory at d0000000 (64-bit, prefetchable) [size=256M]
I/O ports at 2440 [size=8]
Expansion ROM at [disabled]
Capabilities:
Kernel driver in use: i915
第一行包含供应商的nae、模型名称/系列和pci id。
VGA compatible controller [0300]: Intel Corporation 82G35 Express Integrated Graphics Controller [8086:2982]
注意括号内的数字- 8086:2982。这样的数字几乎出现在所有显卡上。第一部分(8086)表示供应商id(这里是Intel),第二部分(2982)表示pci id,它表示图形单元的模型。
现在,您可以使用供应商名称和pci id搜索谷歌以获得更多详细信息。
lshw命令还可以用来获取上述信息。
$ lshw -numeric -C display
WARNING: you should run this program as super-user.
*-display:0
description: VGA compatible controller
product: 82G35 Express Integrated Graphics Controller [8086:2982]
vendor: Intel Corporation [8086]
physical id: 2
bus info: pci@0000:00:02.0
version: 03
width: 64 bits
clock: 33MHz
capabilities: vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:44 memory:e0200000-e02fffff memory:d0000000-dfffffff ioport:2440(size=8)
pci详细信息以相同的方式表示。活动设备驱动程序也列在“配置”行中。
下面是一个具有nvidia geforce 210显卡的系统的示例输出。
$ lspci -vnn | grep VGA -A 12
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GT218 [GeForce 210] [10de:0a65] (rev a2) (prog-if 00 [VGA controller])
.....
集成芯片组vs专用gpu
对于像nvidia或ati这样的专用设备,您可以很容易地在线搜索型号或pci id。规范和其他细节可以在供应商的网站上找到。
但是,对于像Intel GMA这样的集成图形芯片组,仅通过搜索系列名称(这里是82G35)或pci id可能无法获得足够的详细信息。
在这种情况下,查找主板模型并找到它的规范。厂商为他们生产的每一个主板模型发布产品规格文件。这些包含有关硬件的技术细节。
要找到您的主板模型,请使用dmidecode或inxi命令。
Dmidecode
$ sudo dmidecode -t baseboard | grep -i 'Product'
Product Name: DG35EC
Inxi
$ inxi -M
Machine: Mobo: Intel model: DG35EC version: AAE29266-210
Bios: Intel version: ECG3510M.86A.0112.2009.0203.1136 date: 02/03/2009
以上输出显示其为“Intel DG35EC”主板。查找该模型的产品说明文档,并在其中查找视频/图形信息。
检查硬件加速
使用基于硬件的3d加速,需要绘制3d图形的应用程序可以直接使用硬件处理和生成图形,显著加快3d渲染。为此,显卡必须支持硬件加速,并且必须在系统上安装正确的驱动程序才能使用此功能。
硬件提供的3d处理功能符合OpenGL规范,有了合适的硬件,应用程序可以通过OpenGL api访问它们。OpenGL只定义了函数,而实现是在硬件内部完成的,这使得它非常快。
然而,也有像MESA这样的库完全在软件中实现opengl功能。因此,可以使用opengl渲染图形,而不需要一个与opengl兼容的gpu。因此,通过检查opengl呈现库,我们可以发现是否存在硬件加速。
检查glxinfo命令输出以获得OpenGL的详细信息
$ glxinfo | grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) 965G
OpenGL version string: 2.1 Mesa 10.1.0
OpenGL shading language version string: 1.20
OpenGL extensions:
“OpenGL渲染器字符串”指向MESA库,这意味着3d渲染完全在软件中处理。这将是一个缓慢的过程,游戏也不会运行得很好。
使用专用nvidia geforce 200显卡的机器上的输出看起来是这样的
$ glxinfo | grep OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce 210/PCIe/SSE2
OpenGL core profile version string: 3.3.0 NVIDIA 331.20
OpenGL core profile shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.3.0 NVIDIA 331.20
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler
Note the line
OpenGL renderer string: GeForce 210/PCIe/SSE2
So the OpenGL renderer is GeForce, which is the nvidia proprietory driver. This indicates the hardware based 3d acceleration is available. So graphics performance would be good.