From e3012b1051a9c08e76acf1f29c0591573760f64d Mon Sep 17 00:00:00 2001 From: Colin Guthrie <git@colin.guthr.ie> Date: Thu, 2 Oct 2008 20:33:21 +0100 Subject: [PATCH] Also check for tfp in server extensions --- src/screen.c | 30 ++++++++++++++++++++---------- 1 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/screen.c b/src/screen.c index 081ad51..61a2e09 100644 --- a/src/screen.c +++ b/src/screen.c @@ -1613,7 +1613,7 @@ addScreen (CompDisplay *display, Window *children; unsigned int nchildren; int defaultDepth, nvisinfo, nElements, value, i; - const char *glxExtensions, *glExtensions; + const char *glxExtensions, *glxServerExtensions, *glExtensions; XSetWindowAttributes attrib; GLfloat globalAmbient[] = { 0.1f, 0.1f, 0.1f, 0.1f }; GLfloat ambientLight[] = { 0.0f, 0.0f, 0.0f, 0.0f }; @@ -1867,20 +1867,30 @@ addScreen (CompDisplay *display, return FALSE; } - s->ctx = glXCreateContext (dpy, visinfo, NULL, !indirectRendering); - if (!s->ctx) + glxExtensions = glXQueryExtensionsString (dpy, screenNum); + glxServerExtensions = glXQueryServerString (dpy, screenNum, GLX_EXTENSIONS); + if (!strstr (glxExtensions, "GLX_EXT_texture_from_pixmap")) { - compLogMessage ("core", CompLogLevelFatal, "glXCreateContext failed"); - XFree (visinfo); + if (!strstr (glxServerExtensions, "GLX_EXT_texture_from_pixmap")) + { + compLogMessage ("core", CompLogLevelFatal, + "GLX_EXT_texture_from_pixmap is missing"); + XFree (visinfo); - return FALSE; + return FALSE; + } + else + { + indirectRendering = 1; + strictBinding = 1; + } } - glxExtensions = glXQueryExtensionsString (dpy, screenNum); - if (!strstr (glxExtensions, "GLX_EXT_texture_from_pixmap")) + s->ctx = glXCreateContext (dpy, visinfo, NULL, !indirectRendering); + if (!s->ctx) { compLogMessage ("core", CompLogLevelFatal, - "GLX_EXT_texture_from_pixmap is missing"); + "glXCreateContext failed"); XFree (visinfo); return FALSE; -- 1.6.0.2