diff --git a/docs/reference/gtk/running.sgml b/docs/reference/gtk/running.sgml
index 321593a7f1..3e5f688e8e 100644
--- a/docs/reference/gtk/running.sgml
+++ b/docs/reference/gtk/running.sgml
@@ -399,6 +399,10 @@ nevertheless.
misc
Miscellaneous information
+
+ nogl
+ Turn off OpenGL. GDK will behave as if OpenGL support was not available.
+
nograbs
Turn off all pointer and keyboard grabs
diff --git a/gdk/gdk.c b/gdk/gdk.c
index 0b2c3886b5..e40cdea1a3 100644
--- a/gdk/gdk.c
+++ b/gdk/gdk.c
@@ -149,6 +149,7 @@ static const GDebugKey gdk_debug_keys[] = {
{"eventloop", GDK_DEBUG_EVENTLOOP},
{"frames", GDK_DEBUG_FRAMES},
{"settings", GDK_DEBUG_SETTINGS},
+ {"nogl", GDK_DEBUG_NOGL},
{"opengl", GDK_DEBUG_OPENGL},
};
diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h
index d1eb2b1f7a..bb7b71a97e 100644
--- a/gdk/gdkinternals.h
+++ b/gdk/gdkinternals.h
@@ -85,7 +85,8 @@ typedef enum {
GDK_DEBUG_EVENTLOOP = 1 << 10,
GDK_DEBUG_FRAMES = 1 << 11,
GDK_DEBUG_SETTINGS = 1 << 12,
- GDK_DEBUG_OPENGL = 1 << 13
+ GDK_DEBUG_NOGL = 1 << 13,
+ GDK_DEBUG_OPENGL = 1 << 14
} GdkDebugFlag;
typedef enum {
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 89a264c01d..25d20b1282 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -2722,6 +2722,14 @@ gdk_window_ref_impl_surface (GdkWindow *window)
GdkGLContext *
gdk_window_get_paint_gl_context (GdkWindow *window, GError **error)
{
+ if (_gdk_debug_flags & GDK_DEBUG_NOGL)
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("GL support disabled via GDK_DEBUG"));
+ return NULL;
+ }
+
if (window->impl_window->gl_paint_context == NULL)
window->impl_window->gl_paint_context =
GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_gl_context (window,