glx: add LIBGL_ALWAYS_SOFTWARE
authorGeorge Sapountzis <gsap7@yahoo.gr>
Mon, 7 Jul 2008 15:34:17 +0000 (18:34 +0300)
committerGeorge Sapountzis <gsap7@yahoo.gr>
Mon, 7 Jul 2008 15:34:17 +0000 (18:34 +0300)
this disables accelerated DRI and fallbacks to client-side software rendering.

compile-tested only.

src/glx/x11/glxext.c

index 777828569f4c1c86975376b8c3716018c0d1c9af..d13d636699eef910e629b343898a6e8e63f1864a 100644 (file)
@@ -631,6 +631,9 @@ _X_HIDDEN __GLXdisplayPrivate *__glXInitialize(Display* dpy)
     __GLXdisplayPrivate *dpyPriv;
     XEDataObject dataObj;
     int major, minor;
+#ifdef GLX_DIRECT_RENDERING
+    Bool glx_direct, glx_accel;
+#endif
 
 #if defined(USE_XTHREADS)
     {
@@ -698,16 +701,20 @@ _X_HIDDEN __GLXdisplayPrivate *__glXInitialize(Display* dpy)
     dpyPriv->serverGLXversion = 0x0;
 
 #ifdef GLX_DIRECT_RENDERING
+    glx_direct = (getenv("LIBGL_ALWAYS_INDIRECT") == NULL);
+    glx_accel = (getenv("LIBGL_ALWAYS_SOFTWARE") == NULL);
+
     /*
     ** Initialize the direct rendering per display data and functions.
     ** Note: This _must_ be done before calling any other DRI routines
     ** (e.g., those called in AllocAndFetchScreenConfigs).
     */
-    if (getenv("LIBGL_ALWAYS_INDIRECT") == NULL) {
+    if (glx_direct && glx_accel) {
        dpyPriv->dri2Display = dri2CreateDisplay(dpy);
        dpyPriv->driDisplay = driCreateDisplay(dpy);
-       dpyPriv->driswDisplay = driswCreateDisplay(dpy);
     }
+    if (glx_direct)
+       dpyPriv->driswDisplay = driswCreateDisplay(dpy);
 #endif
 
     if (!AllocAndFetchScreenConfigs(dpy, dpyPriv)) {