diff -up gnome-session-3.0.1/tools/gnome-session-check-accelerated-helper.c.blacklist gnome-session-3.0.1/tools/gnome-session-check-accelerated-helper.c --- gnome-session-3.0.1/tools/gnome-session-check-accelerated-helper.c.blacklist 2011-03-22 16:31:43.000000000 -0400 +++ gnome-session-3.0.1/tools/gnome-session-check-accelerated-helper.c 2011-04-27 13:01:15.132322955 -0400 @@ -108,6 +108,21 @@ _has_hardware_gl (Display *display) Window window = None; const char *renderer; int ret = 1; + int i; + + /* This is a quick-and-dirty list of things that we know don't work + * well enough to use. Since we tend to use only direct contexts, + * we can ignore a lot of really old drivers that won't have + * texture_from_pixmap in a direct context. + */ + static const char * const renderer_blacklist[] = { + "software rasterizer", /* Classic mesa software rendering */ + "softpipe", /* Gallium software rendering */ + "llvmpipe", /* Somewhat better Gallium software rendering */ + "R100", /* ATI Radeon R1xx */ + "R200", /* ATI Radeon R2xx */ + "Intel(R) 8" /* Intel 830-865 */ + }; int attrlist[] = { GLX_RGBA, @@ -143,13 +158,10 @@ _has_hardware_gl (Display *display) goto out; renderer = (const char *) glGetString (GL_RENDERER); - /* The current Mesa software GL renderer string is - * "Software Rasterizer". - * Gallium has softpipe and llvmpipe. */ - if (strcasestr (renderer, "software rasterizer") != NULL || - strcasestr (renderer, "softpipe") != NULL || - strcasestr (renderer, "llvmpipe") != NULL) - goto out; + for (i = 0; i < sizeof (renderer_blacklist) / sizeof (renderer_blacklist[0]); i++) { + if (strcasestr (renderer, renderer_blacklist[i]) != NULL) + goto out; + } /* we need to get the max texture size while we have a context, * but we'll check its value later */