A lot of Intel processors like the i5-7400 have integrated gpus, that work quite well with Ubuntu and similar Linux systems using the open source drivers.
Besides IGPU inside CPUs, there are even some motherboards that have IGPU in their chipsets.
In this article we shall take a look at some of the commands that can be used to check the details of the integrated gpus on Linux systems.
These commands should work on any linux system.
1. Inxi
The inxi command and display gpu information in an easy to read format. The details include the GPU vendor, model and driver being used.
Here is the output from a desktop pc using Intel i5-7400 cpu.
$ inxi -G Graphics: Device-1: Intel HD Graphics 630 driver: i915 v: kernel Display: x11 server: X.Org 1.20.5 driver: modesetting unloaded: fbdev,vesa resolution: 1920x1080~60Hz OpenGL: renderer: Mesa DRI Intel HD Graphics 630 (Kaby Lake GT2) v: 4.5 Mesa 19.2.8 $
In the above output the GPU is HD Graphics 630 and the driver being used is i915.
The output also indicates if any OpenGL library is compatible with the driver and is being used or not. Here is its MESA.
Here is another sample output from an Acer Swift 3 laptop that is running on Intel i5-1135G7 cpu. It actually has an Intel Iris Xe igpu.
$ inxi -G Graphics: Device-1: Intel UHD Graphics driver: i915 v: kernel Device-2: Chicony HD User Facing type: USB driver: uvcvideo Display: x11 server: X.Org 1.20.9 driver: modesetting unloaded: fbdev,vesa resolution: 1920x1080 OpenGL: renderer: Mesa Intel Xe Graphics (TGL GT2) v: 4.6 Mesa 20.2.6 $
As shown in the above output i915 is the linux driver that is used for most intel gpus.
2. lshw
The next command is lshw (list hardware). It is capable of displaying some basic information about the gpu.
Here is a sample output for the same desktop pc running on Intel i5-7400 cpu.
$ sudo lshw -c display [sudo] password for enlightened: *-display description: VGA compatible controller product: HD Graphics 630 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 rom configuration: driver=i915 latency=0 resources: irq:131 memory:ee000000-eeffffff memory:d0000000-dfffffff ioport:f000(size=64) memory:c0000-dffff $
The clock frequency being reported is not accurate. It just reports 33Mhz a lot of times, even when the actual frequency is much higher
$ sudo lshw -c display *-display description: VGA compatible controller product: UHD Graphics vendor: Intel Corporation physical id: 2 bus info: pci@0000:00:02.0 logical name: /dev/fb0 version: 01 width: 64 bits clock: 33MHz capabilities: pciexpress msi pm vga_controller bus_master cap_list rom fb configuration: depth=32 driver=i915 latency=0 mode=1920x1080 visual=truecolor xres=1920 yres=1080 resources: iomemory:600-5ff iomemory:400-3ff irq:164 memory:601e000000-601effffff memory:4000000000-400fffffff ioport:3000(size=64) memory:c0000-dffff memory:4010000000-4016ffffff memory:4020000000-40ffffffff $
In the output of the lshw command there is not much readable information about the hardware.
3. lspci
Now comes our good old lspci command that again can provide some basic details about the gpu but is not very indepth.
$ lspci | grep ' VGA ' | cut -d" " -f 1 | xargs -i lspci -v -s {} 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04) (prog-if 00 [VGA controller]) DeviceName: Onboard IGD Subsystem: Gigabyte Technology Co., Ltd HD Graphics 630 Flags: bus master, fast devsel, latency 0, IRQ 131 Memory at ee000000 (64-bit, non-prefetchable) [size=16M] Memory at d0000000 (64-bit, prefetchable) [size=256M] I/O ports at f000 [size=64] [virtual] Expansion ROM at 000c0000 [disabled] [size=128K] Capabilities: <access denied> Kernel driver in use: i915 Kernel modules: i915 enlightened@desktop:~$
The output from the Acer Swift 3 laptop looks as follows
$ lspci | grep ' VGA ' | cut -d" " -f 1 | xargs -i lspci -v -s {} 0000:00:02.0 VGA compatible controller: Intel Corporation UHD Graphics (rev 01) (prog-if 00 [VGA controller]) Subsystem: Acer Incorporated [ALI] UHD Graphics Flags: bus master, fast devsel, latency 0, IRQ 164, IOMMU group 1 Memory at 601e000000 (64-bit, non-prefetchable) [size=16M] Memory at 4000000000 (64-bit, prefetchable) [size=256M] I/O ports at 3000 [size=64] Expansion ROM at 000c0000 [virtual] [disabled] [size=128K] Capabilities: <access denied> Kernel driver in use: i915 Kernel modules: i915 $
3. intel_gpu_frequency
These are some intel gpu specific commandline tools that can be used to probe detailed information about the hardware.
First install Intel gpu tools package
$ sudo apt-get install intel-gpu-tools
Now run the intel_gpu_frequency command
This command will show the base and maximum frequency of the GPU. For the Intel HD 630 the numbers are as shown below:
$ sudo intel_gpu_frequency cur: 350 MHz min: 350 MHz RP1: 350 MHz max: 1000 MHz enlightened@desktop:~$
4. intel_gpu_top
The intel gpu tools package provides another useful command called intel_gpu_top which reports the load on the gpu in real time.
So if you running any graphics intensive task you can expect to see the usage indicator go high.
$ intel_gpu_top intel-gpu-top - 350/ 350 MHz; 0% RC6; 2.32 Watts; 193 irqs/s IMC reads: 625 MiB/s IMC writes: 202 MiB/s ENGINE BUSY MI_SEMA MI_WAIT Render/3D/0 5.53% |███▊ | 0% 0% Blitter/0 0.00% | | 0% 0% Video/0 0.00% | | 0% 0% VideoEnhance/0 0.00% | | 0% 0%
When playing a game or doing some 3D rendering the GPU usage will increase
intel-gpu-top - 1004/1004 MHz; 0% RC6; 16.30 Watts; 15615 irqs/s IMC reads: 5458 MiB/s IMC writes: 7209 MiB/s ENGINE BUSY MI_SEMA MI_WAIT Render/3D/0 99.24% |█████████████████████████████████████████████████████████████████████▍| 0% 0% Blitter/0 0.00% | | 0% 0% Video/0 0.00% | | 0% 0% VideoEnhance/0 0.00% | | 0% 0%
5. glmark2
The glmark2 is a general purpose OpenGL utility to measure the capabilities of any gpu. It runs a couple of tests and then comes up with a score which indicates how powerful the gpu is.
First install the glmark2 package if its not already installed.
$ sudo apt-get install glmark2
The glmark2 command is run with a window of size 800x600.
$ glmark2 -s 800x600
enlightened@desktop:~$ glmark2 ======================================================= glmark2 2014.03+git20150611.fa71af2d ======================================================= OpenGL Information GL_VENDOR: Intel Open Source Technology Center GL_RENDERER: Mesa DRI Intel(R) HD Graphics 630 (Kaby Lake GT2) GL_VERSION: 3.0 Mesa 19.2.8 ======================================================= [build] use-vbo=false: FPS: 2959 FrameTime: 0.338 ms [build] use-vbo=true: FPS: 3046 FrameTime: 0.328 ms [texture] texture-filter=nearest: FPS: 2876 FrameTime: 0.348 ms [texture] texture-filter=linear: FPS: 2815 FrameTime: 0.355 ms [texture] texture-filter=mipmap: FPS: 2774 FrameTime: 0.360 ms [shading] shading=gouraud: FPS: 2592 FrameTime: 0.386 ms [shading] shading=blinn-phong-inf: FPS: 2604 FrameTime: 0.384 ms [shading] shading=phong: FPS: 2430 FrameTime: 0.412 ms [shading] shading=cel: FPS: 2354 FrameTime: 0.425 ms [bump] bump-render=high-poly: FPS: 1764 FrameTime: 0.567 ms [bump] bump-render=normals: FPS: 3007 FrameTime: 0.333 ms [bump] bump-render=height: FPS: 2947 FrameTime: 0.339 ms [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1773 FrameTime: 0.564 ms [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1025 FrameTime: 0.976 ms [pulsar] light=false:quads=5:texture=false: FPS: 2724 FrameTime: 0.367 ms [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 1038 FrameTime: 0.963 ms [desktop] effect=shadow:windows=4: FPS: 1807 FrameTime: 0.553 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 883 FrameTime: 1.133 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 750 FrameTime: 1.333 ms [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 967 FrameTime: 1.034 ms [ideas] speed=duration: FPS: 1851 FrameTime: 0.540 ms [jellyfish] <default>: FPS: 1853 FrameTime: 0.540 ms [terrain] <default>: FPS: 249 FrameTime: 4.016 ms [shadow] <default>: FPS: 1893 FrameTime: 0.528 ms [refract] <default>: FPS: 557 FrameTime: 1.795 ms [conditionals] fragment-steps=0:vertex-steps=0: FPS: 2428 FrameTime: 0.412 ms [conditionals] fragment-steps=5:vertex-steps=0: FPS: 2487 FrameTime: 0.402 ms [conditionals] fragment-steps=0:vertex-steps=5: FPS: 2403 FrameTime: 0.416 ms [function] fragment-complexity=low:fragment-steps=5: FPS: 2405 FrameTime: 0.416 ms [function] fragment-complexity=medium:fragment-steps=5: FPS: 2473 FrameTime: 0.404 ms [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 2407 FrameTime: 0.415 ms [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 2411 FrameTime: 0.415 ms [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2436 FrameTime: 0.411 ms ======================================================= glmark2 Score: 2090 ======================================================= enlightened@desktop:~$
Keep in mind that the score of glmark depends on the size of the display screen as well as the visibility of the screen.
If the resolution is different say 1024x768 or if its hidden under some other window, then the score will be very different.
Check out our other posts on glmark to learn more about gpu testing on linux:
GPU Benchmark Test of Intel HD Graphics 630 using glmark2
Benchmark graphics card (GPU) performance on Linux with glmark
Conclusion
Those were some of the basic commands used to gather information about intel graphics cards and gpus on any system when running ubuntu or similar linux distros.
If you plan to run games on your linux installation then knowing the gpu capabilities can be quite useful. Even other things like desktop effects and compositors need gpus to run properly.
For any other questions and feedback, let us know in the comments below.