diff --git a/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp b/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp index d1af5540..d51c1af2 100644 --- a/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp +++ b/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp @@ -131,7 +131,8 @@ JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_Pbuffer_nCreate throwException(env, "Could not create a GLX context"); return false; } - if (glXIsDirect(getCurrentDisplay(), context) == False) { + jboolean allow_software_acceleration = getBooleanProperty(env, "org.lwjgl.opengl.Window.allowSoftwareOpenGL"); + if (!allow_software_acceleration && glXIsDirect(getCurrentDisplay(), context) == False) { glXDestroyContext(getCurrentDisplay(), context); XFree(configs); throwException(env, "Could not create a direct GLX context"); diff --git a/src/native/linux/org_lwjgl_opengl_Window.cpp b/src/native/linux/org_lwjgl_opengl_Window.cpp index 91e09d7c..0f704ae3 100644 --- a/src/native/linux/org_lwjgl_opengl_Window.cpp +++ b/src/native/linux/org_lwjgl_opengl_Window.cpp @@ -441,7 +441,8 @@ static bool initWindowGLX(JNIEnv *env, Display *disp, int screen, jstring title, throwException(env, "Could not create a GLX context"); return false; } - if (glXIsDirect(disp, context) == False) { + jboolean allow_software_acceleration = getBooleanProperty(env, "org.lwjgl.opengl.Window.allowSoftwareOpenGL"); + if (!allow_software_acceleration && glXIsDirect(disp, context) == False) { glXDestroyContext(disp, context); XFree(vis_info); throwException(env, "Could not create a direct GLX context");