Benchmark graphics card (GPU) performance on Linux with glmark

26 Flares 26 Flares ×

Graphics performance - measure it

Recently when I added a new nvidia graphics card to one of my desktops, I was curious to measure and compare the power of this graphics card with whatever it was before.

One way to do this is with benchmark tools which would run a series of "drawing" tests to measure the graphics processing capacity of the hardware. In simple terms, GPUs that can process and render more images/graphics per unit time (frames per second), are more powerful.

Glmark - the benchmark tool

On Linux there are not many tools for benchmarking GPUs, and after spending quite some time on google, I came across this little tool called glmark. It is developed by Linaro.

Glmark runs a series of tests, rendering different kinds of 2D and 3D graphics and animations on the screen and then measures the output performance in terms of FPS (frames per second). It then averages out the fps across all the tests to calculate a score for the gpu.

Not very sure, but the best guess is, that this score is a relative measure of how capable the graphics processing unit of your machine is. Comparing it with the score of other machines should give a rough comparison of the graphics processing power.

benchmark gpu performance with glmark

I ran glmark2 on multiple machines each with a different GPU configuration to understand what the glmark output indicated. All the machines are desktop pcs, and here is a short description of each

1. M1 - Intel DG35EC motherboard + QuadCore + 8GB + Ubuntu 13.10
=> "Intel® Graphics Media Accelerator (Intel® GMA) X3500 onboard graphics subsystem"
Little/Limited hardware acceleration

2. M2 - Gigabyte GA-G41MT-ES2L motherboard + QuadCore + 4GB + Ubuntu 13.04
=> "Integrated Intel Graphics Media Accelerator X4500"
Little/Limited hardware acceleration

3. M3 - Intel DG35EC motherboard + Nvidia GeForce 210 (Nouveau drivers) 
+ QuadCore + 4GB + Linux Mint 17

4. M4 - Intel DG35EC motherboard + Nvidia GeForce 210 (Nvidia proprietory drivers)
+ QuadCore + 4GB + Linux Mint 17

First thing to do is install glmark. On Ubuntu/Linux Mint it is available in the default repositories.

$ sudo apt-get install glmark2


To run the tests, all you need to do is to run the glmark2 command without any options. It would render many different kinds of animations one after another inside a window, and print out the fps measurements alongside in the terminal. Make sure to not run any cpu intensive application during this time, else the test results may deviate.

At the end of the tests, glmark would show a score. A higher score would should indicate a more powerful GPU. The end score is not fixed and varies each time you run the test. But it does stay within a close range. So you need to run glmark a few times ( I did 3 times), and take the average score.

In some cases, a particular test run might result into a very high or low test score. I simply discarded those values and rank glmark again.

All tests were done on Samsung LCD monitor with 1360x768@60hz resolution.

Time for scores

Now lets take a look at glmark output and score

M1 - Intel GMA X3500 onboard graphics chipset

This machine has the least amount of graphics power and the glmark tests are not even able to complete because the system crashes somewhere in between. The 3d animations do work, but with jitters.

$ glmark2 
    glmark2 2012.08
    OpenGL Information
    GL_VENDOR:     Intel Open Source Technology Center
    GL_RENDERER:   Mesa DRI Intel(R) 965G 
    GL_VERSION:    2.1 Mesa 9.2.1
[build] use-vbo=false: FPS: 325 FrameTime: 3.077 ms
[build] use-vbo=true: FPS: 375 FrameTime: 2.667 ms
[texture] texture-filter=nearest: FPS: 371 FrameTime: 2.695 ms
[texture] texture-filter=linear: FPS: 365 FrameTime: 2.740 ms
[texture] texture-filter=mipmap: FPS: 338 FrameTime: 2.959 ms
[shading] shading=gouraud: FPS: 235 FrameTime: 4.255 ms
[shading] shading=blinn-phong-inf: FPS: 206 FrameTime: 4.854 ms
[shading] shading=phong: FPS: 173 FrameTime: 5.780 ms
[bump] bump-render=high-poly: FPS: 112 FrameTime: 8.929 ms
[bump] bump-render=normals: FPS: 347 FrameTime: 2.882 ms
[bump] bump-render=height: FPS: 320 FrameTime: 3.125 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 134 FrameTime: 7.463 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 60 FrameTime: 16.667 ms
[pulsar] light=false:quads=5:texture=false: FPS: 336 FrameTime: 2.976 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 67 FrameTime: 14.925 ms
[desktop] effect=shadow:windows=4: FPS: 136 FrameTime: 7.353 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 164 FrameTime: 6.098 ms
                                  glmark2 Score: 239 

The score is around 240 which is pretty low. On this particular machine Supertuxkart is sluggish and unplayable, whereas 0AD simply turns into a wallpaper :)

Note that the renderer is MESA, which indicates that the 3D acceleration is being software emulated and not available from the hardware. So hardware acceleration is unavailable.

M2 - Intel GMA X4500 onboard graphics chipset

This is the Gigabyte motherboard with integrated Intel GMA graphics unit. This machine has slightly higher graphics power compared to the previous machine.

The hardware details reported by lspci are

$ lspci -vnn | grep VGA -A 12
00:02.0 VGA compatible controller [0300]: Intel Corporation 4 Series Chipset Integrated Graphics Controller [8086:2e32] (rev 03) (prog-if 00 [VGA controller])
	Subsystem: Giga-byte Technology Device [1458:d000]
	Flags: bus master, fast devsel, latency 0, IRQ 43
	Memory at fd800000 (64-bit, non-prefetchable) [size=4M]
	Memory at d0000000 (64-bit, prefetchable) [size=256M]
	I/O ports at ff00 [size=8]
	Expansion ROM at <unassigned> [disabled]
	Capabilities: <access denied>
	Kernel driver in use: i915
	Kernel modules: i915

Glmark is able to complete all tests on this machine and the results are like this ...

$ glmark2
    glmark2 2011.09
    OpenGL Information
    GL_VENDOR:     Tungsten Graphics, Inc
    GL_RENDERER:   Mesa DRI Intel(R) G41 GEM 20100330 DEVELOPMENT 
    GL_VERSION:    2.1 Mesa 7.10.2
[build] use-vbo=false:  FPS: 493
[build] use-vbo=true:  FPS: 494
[texture] texture-filter=nearest:  FPS: 431
[texture] texture-filter=linear:  FPS: 427
[texture] texture-filter=mipmap:  FPS: 451
[shading] shading=gouraud:  FPS: 495
[shading] shading=blinn-phong-inf:  FPS: 312
[shading] shading=phong:  FPS: 269
[bump] bump-render=high-poly:  FPS: 201
[bump] bump-render=normals:  FPS: 392
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;:  FPS: 247
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;:  FPS: 131
[pulsar] light=false:quads=5:texture=false:  FPS: 494
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4:  FPS: 126
[conditionals] fragment-steps=0:vertex-steps=0:  FPS: 375
[conditionals] fragment-steps=5:vertex-steps=0:  FPS: 297
[conditionals] fragment-steps=0:vertex-steps=5:  FPS: 375
[function] fragment-complexity=low:fragment-steps=5:  FPS: 375
[function] fragment-complexity=medium:fragment-steps=5:  FPS: 285
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5:  FPS: 362
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5:  FPS: 362
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5:  FPS: 272
                                  glmark2 Score: 348 

The average score for this machine was around 350. This is comparatively better than our previous machine which had an inferior GPU.

This machine can play supertuxkart a little bit. But games like 0AD do not work. But again, direct rendering is done by MESA, so hardware acceleration is absent.

M3 - Nvidia GeForce 210 with nouveau driver

This machine has the same ot an Intel motheboard with external Nvidia GeForce 210 series GPU connected via PCI slot. Its a Zotac brand nvidia chipset and has 1GB dedicated RAM and 520Mhz GPU/Core clock speed

$ 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])
	Subsystem: ZOTAC International (MCO) Ltd. Device [19da:1160]
	Flags: bus master, fast devsel, latency 0, IRQ 16
	Memory at e2000000 (32-bit, non-prefetchable) [size=16M]
	Memory at d0000000 (64-bit, prefetchable) [size=256M]
	Memory at e0000000 (64-bit, prefetchable) [size=32M]
	I/O ports at 2000 [size=128]
	Expansion ROM at e3080000 [disabled] [size=512K]
	Capabilities: <access denied>
	Kernel driver in use: nouveau

First we are going to test it with the default Nouveau drivers and see how it performs. The next test would be done with Nvidia proprietory drivers.

$ glmark2
    glmark2 2012.08
    OpenGL Information
    GL_VENDOR:     nouveau
    GL_RENDERER:   Gallium 0.4 on NVA8
    GL_VERSION:    3.0 Mesa 9.2.1
[build] use-vbo=false: FPS: 420 FrameTime: 2.381 ms
[build] use-vbo=true: FPS: 430 FrameTime: 2.326 ms
[texture] texture-filter=nearest: FPS: 395 FrameTime: 2.532 ms
[texture] texture-filter=linear: FPS: 393 FrameTime: 2.545 ms
[texture] texture-filter=mipmap: FPS: 409 FrameTime: 2.445 ms
[shading] shading=gouraud: FPS: 351 FrameTime: 2.849 ms
[shading] shading=blinn-phong-inf: FPS: 353 FrameTime: 2.833 ms
[shading] shading=phong: FPS: 319 FrameTime: 3.135 ms
[bump] bump-render=high-poly: FPS: 301 FrameTime: 3.322 ms
[bump] bump-render=normals: FPS: 428 FrameTime: 2.336 ms
[bump] bump-render=height: FPS: 387 FrameTime: 2.584 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 315 FrameTime: 3.175 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 157 FrameTime: 6.369 ms
[pulsar] light=false:quads=5:texture=false: FPS: 348 FrameTime: 2.874 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 414 FrameTime: 2.415 ms
[desktop] effect=shadow:windows=4: FPS: 407 FrameTime: 2.457 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 260 FrameTime: 3.846 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 279 FrameTime: 3.584 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 269 FrameTime: 3.717 ms
[ideas] speed=duration: FPS: 356 FrameTime: 2.809 ms
[jellyfish] <default>: FPS: 227 FrameTime: 4.405 ms
[terrain] <default>: FPS: 30 FrameTime: 33.333 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 386 FrameTime: 2.591 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 290 FrameTime: 3.448 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 383 FrameTime: 2.611 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 384 FrameTime: 2.604 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 312 FrameTime: 3.205 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 383 FrameTime: 2.611 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 384 FrameTime: 2.604 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 318 FrameTime: 3.145 ms
                                  glmark2 Score: 336 

The average score remains around 335. The score indicates poor graphics performance inspite of having a dedicated Nvidia GPU. Its because of the Nouveau drivers which are inefficient and do not use the full potential of the nvidia cards.

Games like supertuxkart and 0AD worked very well.

Note that the score of this machine is lesser/equal to the previous machine. While testing games it was seen, that this machine had a better graphics performance. 

This is because this machine has a separate dedicated GPU which works independantly. Whereas in the previous machine the MESA libraries used the main CPU to do graphics work, which resulted in a competitive score, but would fail when real applications would use it.

M4 - Nvidia GeForce 210 with nvidia-331 driver

This is the same machine as above, and uses Nvidia proprietory drivers instead of Nouvea drivers.

The hardware details as reported by lspci are

$ 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])
	Subsystem: ZOTAC International (MCO) Ltd. Device [19da:1160]
	Flags: bus master, fast devsel, latency 0, IRQ 46
	Memory at e2000000 (32-bit, non-prefetchable) [size=16M]
	Memory at d0000000 (64-bit, prefetchable) [size=256M]
	Memory at e0000000 (64-bit, prefetchable) [size=32M]
	I/O ports at 2000 [size=128]
	[virtual] Expansion ROM at e3080000 [disabled] [size=512K]
	Capabilities: <access denied>
	Kernel driver in use: nvidia

Glmark output and score

$ glmark2
    glmark2 2012.08
    OpenGL Information
    GL_VENDOR:     NVIDIA Corporation
    GL_RENDERER:   GeForce 210/PCIe/SSE2
    GL_VERSION:    3.3.0 NVIDIA 331.20
[build] use-vbo=false: FPS: 671 FrameTime: 1.490 ms
[build] use-vbo=true: FPS: 747 FrameTime: 1.339 ms
[texture] texture-filter=nearest: FPS: 660 FrameTime: 1.515 ms
[texture] texture-filter=linear: FPS: 649 FrameTime: 1.541 ms
[texture] texture-filter=mipmap: FPS: 688 FrameTime: 1.453 ms
[shading] shading=gouraud: FPS: 635 FrameTime: 1.575 ms
[shading] shading=blinn-phong-inf: FPS: 631 FrameTime: 1.585 ms
[shading] shading=phong: FPS: 600 FrameTime: 1.667 ms
[bump] bump-render=high-poly: FPS: 507 FrameTime: 1.972 ms
[bump] bump-render=normals: FPS: 781 FrameTime: 1.280 ms
[bump] bump-render=height: FPS: 744 FrameTime: 1.344 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 483 FrameTime: 2.070 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 308 FrameTime: 3.247 ms
[pulsar] light=false:quads=5:texture=false: FPS: 579 FrameTime: 1.727 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 231 FrameTime: 4.329 ms
[desktop] effect=shadow:windows=4: FPS: 326 FrameTime: 3.067 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 396 FrameTime: 2.525 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 423 FrameTime: 2.364 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 432 FrameTime: 2.315 ms
[ideas] speed=duration: FPS: 563 FrameTime: 1.776 ms
[jellyfish] <default>: FPS: 360 FrameTime: 2.778 ms
[terrain] <default>: FPS: 41 FrameTime: 24.390 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 664 FrameTime: 1.506 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 556 FrameTime: 1.799 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 662 FrameTime: 1.511 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 661 FrameTime: 1.513 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 517 FrameTime: 1.934 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 654 FrameTime: 1.529 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 662 FrameTime: 1.511 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 603 FrameTime: 1.658 ms
                                  glmark2 Score: 547 

This time the score is above 500 and this machine has very decent graphics performance for low requirements like playing kid games. Games like Supertuxkart and 0AD work perfectly without any glitches.

The GL rendered is Nvidia driver which means that hardware based 3d acceleration is available and is working fine.

Benchmark your GPU

To benchmark your system's GPU run the glmark command and check the output and score. Performance shall be highest with proprietory drivers instead of the free drivers.

There is no online score table to compare against, but concluding from the above tests, something higher that 500 should be good and indicate usable hardware acceleration provided that GL_RENDERER is a non-MESA driver.

If the GL_RENDERER is MESA, then 3d rendering is being done by software and not hardware, and so 3D applications and games would have very poor performance.

If you add a new graphics card to your linux machine, the first thing to do would be get the best driver for it. Nvidia provides linux drivers for most of its modern graphics cards which work very well with linux.

You can get a list of some of the best performing GPUs for linux at


In the above tests it can be seen, that with rising score, the FPS count in each individual test rises progressively. So high performance GPUs are able to deliver a higher FPS. However this FPS should not be confused with the monitor refresh rate which is 60 and will stay there.

The FPS depicted in the benchmark test is a measure of how many frames was the GPU (or the entire system) was able to process and generate per second.

Note that the glmark score is not a conclusive test of the graphics performance. As seen in the 3rd test, the scores can sometimes be misleading. For example, a machine with high CPU and no hardware acceleration might get the same score as a machine with moderate CPU and low GPU. This happens because the software based rendering via the high CPU equals the processing power of the hardware acceleration of the low GPU working alone. However this is a limitation of the benchmark tool which have to evolve to perform indepth tests and analysis to give a more accurate picture.

So now run glmark on your machine and tell us your score along with GPU brand/model, in the comment box below.

Some more scores

Now here are the scores of some graphic cards, reported by other users.

    OpenGL Information
    GL_VENDOR:     NVIDIA Corporation
    GL_RENDERER:   GeForce GTX 460/PCIe/SSE2
    GL_VERSION:    4.4.0 NVIDIA 331.38
                                  glmark2 Score: 4707 
Last Updated On : 29th April 2014

Subscribe to get updates delivered to your inbox

About Silver Moon

Php developer, blogger and Linux enthusiast. He can be reached at Or find him on

  • Gavin

    glmark2 2012.08
    OpenGL Information
    GL_VENDOR: X.Org
    GL_RENDERER: Gallium 0.4 on AMD RV730
    GL_VERSION: 3.0 Mesa 10.1.3
    glmark2 Score: 891

  • Md. Sajib Al Mamun

    glmark2 2012.08
    OpenGL Information
    GL_VENDOR: ATI Technologies Inc.
    GL_RENDERER: AMD Radeon HD 7560D
    GL_VERSION: 4.4.12874 Compatibility Profile Context 14.10.1006


    glmark2 Score: 876

  • crysman


    glmark2 2012.08


    OpenGL Information

    GL_VENDOR: Intel Open Source Technology Center

    GL_RENDERER: Mesa DRI Intel(R) Sandybridge Mobile

    GL_VERSION: 3.0 Mesa 10.1.3


    glmark2 Score: 831


  • Goddard

    r9 290 – in full screen – 6087

  • Goddard

    AMD r9 290

  • blackmx3

    Radeon 7850 + FX-6300

    OpenGL Information
    GL_VENDOR: ATI Technologies Inc.
    GL_RENDERER: AMD Radeon HD 7800 Series
    GL_VERSION: 4.3.12798 Compatibility Profile Context 13.35.1005
    glmark2 Score: 5103

  • Devius

    Or you could use this and get more meaningful results:

  • docgreen

    VGA compatible controller [0300]: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller
    OpenGL Information
    GL_VENDOR: Intel Open Source Technology Center
    GL_RENDERER: Mesa DRI Intel(R) Sandybridge Mobile
    GL_VERSION: 3.0 Mesa 10.0.0
    glmark2 Score: 1255

  • random stranger

    OpenGL Information
    GL_VENDOR: NVIDIA Corporation
    GL_RENDERER: GeForce GTX 645/PCIe/SSE2
    GL_VERSION: 4.4.0 NVIDIA 331.38
    glmark2 Score: 4258

  • MesaDRI


    You are using Mesa DRI, which does not mean at all that hardware acceleration is absent.

    You are however using the open-source drivers available for your graphic boards, which may have feature/performance differences compared to the vendor-issued drivers.

26 Flares Twitter 3 Facebook 5 Google+ 18 LinkedIn 0 StumbleUpon 0 Pin It Share 0 26 Flares ×