--- compiz/src/screen.c.orig 2006-07-09 12:02:34.410633500 +0200 +++ compiz/src/screen.c 2006-07-09 12:02:26.110114750 +0200 @@ -897,7 +897,7 @@ Window *children; unsigned int nchildren; int defaultDepth, nvisinfo, nElements, value, i; - const char *glxExtensions, *glExtensions; + const char *glxExtensions, *glxServerExtensions, *glExtensions; GLint stencilBits; XSetWindowAttributes attrib; GLfloat globalAmbient[] = { 0.1f, 0.1f, 0.1f, 0.1f }; @@ -1107,6 +1107,25 @@ if (display->screens) shareList = display->screens->ctx; + glxExtensions = glXQueryExtensionsString (s->display->display, screenNum); + glxServerExtensions = glXQueryServerString(s->display->display, + screenNum, GLX_EXTENSIONS ); + + if (!strstr (glxExtensions, "GLX_EXT_texture_from_pixmap")) + { + if (!strstr (glxServerExtensions, "GLX_EXT_texture_from_pixmap")) + { + fprintf (stderr, "%s: GLX_EXT_texture_from_pixmap is missing\n", + programName); + return FALSE; + } + else + { + indirectRendering = 1; + strictBinding = 1; + } + } + s->ctx = glXCreateContext (dpy, visinfo, shareList, !indirectRendering); if (!s->ctx) { @@ -1116,14 +1135,6 @@ XFree (visinfo); - glxExtensions = glXQueryExtensionsString (s->display->display, screenNum); - if (!strstr (glxExtensions, "GLX_EXT_texture_from_pixmap")) - { - fprintf (stderr, "%s: GLX_EXT_texture_from_pixmap is missing\n", - programName); - return FALSE; - } - if (!strstr (glxExtensions, "GLX_SGIX_fbconfig")) { fprintf (stderr, "%s: GLX_SGIX_fbconfig is missing\n",