How to get information about graphics card (GPU) on Linux

Posted: Wednesday, June 8, 2016 by Tyler Durden in

How to get information about graphics card (GPU) on Linux



Graphics processing units - GPU

You need to find out the correct model and vendor of the graphics card on your system, to be able to install the appropriate drivers and get the hardware to function properly. Most modern linux distros can detect variety of graphics card, but do not always have the best driver for it.
So if you have an external graphics card like Nvidia or Ati, then you need to find the model name/number and then lookup further details online. Ofcourse, its easier if you have the hardware manual that came along when you purchased the computer. But here we shall be using commands to find out the same information.

Hardware details

The are only a few commands to learn. First one is lscpi and here is a quick example showing how to fetch details about graphics unit (also called vga card or video card).
$ 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 <unassigned> [disabled]
        Capabilities: <access denied>
        Kernel driver in use: i915
The first line has the nae of the vendor, the model name/series and the pci id.
VGA compatible controller [0300]: Intel Corporation 82G35 Express Integrated Graphics Controller [8086:2982]
Note the numbers in the bracket - 8086:2982. Such a number is present for almost all graphics card. The first part (8086) indicates the vendor id (which is Intel here) and the second number (2982) indicates the pci id, which indicates the model of the graphics unit.
Now you can search google for more details using the Vendor name and the pci id.
The lshw command can also be used to get the above information.
$ 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)
The pci details is indicated in the same way. The active device driver is also listed in the "configuration" line.
Here is a sample output from a system having an nvidia geforce 210 graphics card.
$ 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])
.....

Integrated chipsets vs dedicated gpus

For dedicated units like nvidia or ati, you can easily search online for the model number or pci id. The specifications and other details would be available on the vendor's website.
However for integrated graphics chipsets like Intel GMA, you may not get sufficient details by just searching the series name (82G35 over here) or pci id. The series covers many similar models, while the pci id might not be documented on the website.
In that case, lookup the motherboard model and find its specifications. Vendors publish product specification documents for every motherboard model they manufacture. These contain technical details about the hardware.
To find your motherboard model, use dmidecode or inxi command.
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
The above output shows that its a "Intel DG35EC" motherboard. Google up for that model to find the product specifiation document, and look for Video/Graphics information in it.

Check hardware acceleration

With hardware based 3d acceleration, applications that need to draw 3d graphics can use the hardware directly to process and generate the graphics, speeding up 3d rendering significantly. For this, the graphics card must support hardware acceleration and the correct drivers must be installed on the system to use this feature.
The 3d processing functions provided by the hardware adhere to the OpenGL specifications, and with the right hardware, applications can access them through the opengl api. OpenGL just defines the functions and the implementation is done inside the hardware which makes it very fast.
However there are libraries like MESA that implement the opengl functions entirely inside software. So it is possible to render graphics using opengl without actually having an opengl compatible gpu. So by checking the opengl rendering library, we can find out if hardware acceleration is present or not.
Check the glxinfo command output for OpenGL details
$ 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:
The "OpenGL renderer string" points to MESA libraries which means that 3d rendering is being handled entirely inside software. This is going to be slow and games would not work well.
The output on a machine with dedicated nvidia geforce 200 graphics card looks like this
$ 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.

0 comments :