st/egl: Enable extensions before adding configs.
authorChia-I Wu <olv@lunarg.com>
Sun, 21 Feb 2010 02:02:13 +0000 (10:02 +0800)
committerChia-I Wu <olv@lunarg.com>
Sun, 21 Feb 2010 02:22:08 +0000 (10:22 +0800)
Configs are validated before added.  The validation depends on the
extensions available.  If configs are added before enabling extensions,
configs with EGL_SCREEN_SURFACE_MESA bit set will never pass the
validation for example.

src/gallium/state_trackers/egl/common/egl_g3d.c

index 7ab2cd49abd982455d2148f0069697e568ae1b35..d769d253ac5c727834f0bd1947ca8d88239eeec4 100644 (file)
@@ -587,19 +587,19 @@ egl_g3d_initialize(_EGLDriver *drv, _EGLDisplay *dpy,
    egl_g3d_init_st(&gdrv->base);
    dpy->ClientAPIsMask = gdrv->api_mask;
 
-   if (egl_g3d_add_configs(drv, dpy, 1) == 1) {
-      _eglError(EGL_NOT_INITIALIZED, "eglInitialize(unable to add configs)");
-      goto fail;
-   }
-
 #ifdef EGL_MESA_screen_surface
-   /* enable MESA_screen_surface */
+   /* enable MESA_screen_surface before adding (and validating) configs */
    if (gdpy->native->modeset) {
       dpy->Extensions.MESA_screen_surface = EGL_TRUE;
       egl_g3d_add_screens(drv, dpy);
    }
 #endif
 
+   if (egl_g3d_add_configs(drv, dpy, 1) == 1) {
+      _eglError(EGL_NOT_INITIALIZED, "eglInitialize(unable to add configs)");
+      goto fail;
+   }
+
    *major = 1;
    *minor = 4;