mesa-progs
Learn how to use mesa-progs on Gentoo Linux to verify OpenGL rendering, confirm Intel Iris GPU acceleration, detect llvmpipe CPU fallback, and validate Mesa driver configuration
Basic Usage
Install mesa and mesa-progs
Check permissions
A broader solution is to add the user(s) needing access the video card to the video group
Advanced Usage
Show active OpenGL vendor and renderer (intel is what we want for HP EliteDesk 800 G3 DM 65W)
Verify which OpenGL driver is actually in use
Here is an example correct loading Intel driver
glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Intel (0x8086)
Device: Mesa Intel(R) HD Graphics 530 (SKL GT2) (0x1912)
Version: 25.3.3
Accelerated: yes
Video memory: 23443MB
Unified memory: yes
Preferred profile: core (0x1)
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) HD Graphics 530 (SKL GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 25.3.3
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.6 (Compatibility Profile) Mesa 25.3.3
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 25.3.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
When open vendor is set to Mesa we are failing, in this example we are failing to load intel and iris drivers
glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Mesa (0xffffffff)
Device: llvmpipe (LLVM 21.1.8, 256 bits) (0xffffffff)
Version: 25.3.3
Accelerated: no
Video memory: 23443MB
Unified memory: yes
Preferred profile: core (0x1)
Max core profile version: 4.5
Max compat profile version: 4.5
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
VBO free memory - total: 31 MB, largest block: 31 MB
VBO free aux. memory - total: 11743 MB, largest block: 11743 MB
Texture free memory - total: 31 MB, largest block: 31 MB
Texture free aux. memory - total: 11743 MB, largest block: 11743 MB
Renderbuffer free memory - total: 31 MB, largest block: 31 MB
Renderbuffer free aux. memory - total: 11743 MB, largest block: 11743 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 4293913726 MB
Total available memory: 4293937170 MB
Currently available dedicated video memory: 31 MB
OpenGL vendor string: Mesa
OpenGL renderer string: llvmpipe (LLVM 21.1.8, 256 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 25.3.3
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.5 (Compatibility Profile) Mesa 25.3.3
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 25.3.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
Test Intel Iris Mesa driver explicitly
Check so hardware acceralator is available
Checking merge time and eta
Best POSIX, clean, robust solution (recommended)
POSIX + extensible (best if you may format later)
Minimal and sufficient (when output already has newlines)
Equivalent methods to extract merge time and ETA from genlop output
genlop -c 2>&1 | grep -e 'current merge time' -e 'ETA'
current merge time: 1 minute and 39 seconds.
ETA: 16 minutes and 5 seconds.
genlop -c 2>&1 | tr '\r' '\n' | grep -e 'current merge time' -e 'ETA'
current merge time: 1 minute and 44 seconds.
ETA: 16 minutes.
genlop -c 2>&1 | tr '\r' '\n' | awk '/current merge time/ || /ETA/'
current merge time: 1 minute and 50 seconds.
ETA: 15 minutes and 54 seconds.
genlop -c | tr '\r' '\n' | grep -E 'current merge time|ETA'
current merge time: 2 minutes.
ETA: 15 minutes and 44 seconds.
genlop -c | grep -e 'current merge time' -e '^ *ETA'
current merge time: 2 minutes and 5 seconds.
ETA: 15 minutes and 39 seconds.
genlop -c | grep -E --line-buffered 'current merge time|ETA'
current merge time: 2 minutes and 10 seconds.
ETA: 15 minutes and 34 seconds.
genlop -c | sed 's/\r/\n/g' | grep -E 'current merge time|ETA'
current merge time: 2 minutes and 16 seconds.
ETA: 15 minutes and 28 seconds.
genlop -c | tr '\r' '\n' | grep -E 'current merge time|ETA'
current merge time: 2 minutes and 21 seconds.
ETA: 15 minutes and 23 seconds.
genlop -c | grep -e 'current merge time' -e '^ *ETA'
current merge time: 2 minutes and 32 seconds.
ETA: 15 minutes and 12 seconds.
Tips and Tricks
Add genlop-status as an alias and we can simple check compile status