Blob Blame History Raw
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,20 @@ _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 */
+                "R100",                /* ATI Radeon R1xx */
+                "R200",                /* ATI Radeon R2xx */
+                "Intel(R) 8"           /* Intel 830-865 */
+        };
 
         int attrlist[] = {
                 GLX_RGBA,
@@ -143,13 +157,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 */