diff --git a/panda/src/glxdisplay/glxGraphicsStateGuardian.cxx b/panda/src/glxdisplay/glxGraphicsStateGuardian.cxx index 408a0d30b4..c94aa9a2dd 100644 --- a/panda/src/glxdisplay/glxGraphicsStateGuardian.cxx +++ b/panda/src/glxdisplay/glxGraphicsStateGuardian.cxx @@ -122,7 +122,11 @@ reset() { FrameBufferProperties properties = get_properties(); int frame_buffer_mode = properties.get_frame_buffer_mode(); - if (_gl_renderer.find("Mesa") != string::npos) { + // If "Mesa" is present, assume software. However, if "Mesa DRI" is + // found, it's actually a Mesa-based OpenGL layer running over a + // hardware driver. + if (_gl_renderer.find("Mesa") != string::npos && + _gl_renderer.find("Mesa DRI") == string::npos) { // It's Mesa, therefore probably a software context. if (!software) { glxdisplay_cat.error()