Merge commit 'origin/master' into gallium-0.2
[mesa.git] / src / egl / main / eglconfig.c
index 3ef0564a5489e536e3b29c520922c0e959c4b0ea..b19988f49a918a1116636544aeb63554d248de70 100644 (file)
@@ -43,9 +43,7 @@ _eglInitConfig(_EGLConfig *config, EGLint id)
    _eglSetConfigAttrib(config, EGL_NATIVE_VISUAL_TYPE,      EGL_DONT_CARE);
    _eglSetConfigAttrib(config, EGL_MIN_SWAP_INTERVAL,       EGL_DONT_CARE);
    _eglSetConfigAttrib(config, EGL_MAX_SWAP_INTERVAL,       EGL_DONT_CARE);
-   _eglSetConfigAttrib(config, EGL_SURFACE_TYPE,            
-                   EGL_SCREEN_BIT_MESA | EGL_PBUFFER_BIT |
-                   EGL_PIXMAP_BIT | EGL_WINDOW_BIT);
+   _eglSetConfigAttrib(config, EGL_SURFACE_TYPE,            EGL_WINDOW_BIT);
    _eglSetConfigAttrib(config, EGL_TRANSPARENT_TYPE,        EGL_NONE);
    _eglSetConfigAttrib(config, EGL_TRANSPARENT_RED_VALUE,   EGL_DONT_CARE);
    _eglSetConfigAttrib(config, EGL_TRANSPARENT_GREEN_VALUE, EGL_DONT_CARE);
@@ -96,6 +94,14 @@ _eglAddConfig(_EGLDisplay *display, _EGLConfig *config)
    _EGLConfig **newConfigs;
    EGLint n;
 
+   /* do some sanity checks on the config's attribs */
+   assert(GET_CONFIG_ATTRIB(config, EGL_CONFIG_ID) > 0);
+   assert(GET_CONFIG_ATTRIB(config, EGL_RENDERABLE_TYPE) != 0x0);
+   assert(GET_CONFIG_ATTRIB(config, EGL_SURFACE_TYPE) != 0x0);
+   assert(GET_CONFIG_ATTRIB(config, EGL_RED_SIZE) > 0);
+   assert(GET_CONFIG_ATTRIB(config, EGL_GREEN_SIZE) > 0);
+   assert(GET_CONFIG_ATTRIB(config, EGL_BLUE_SIZE) > 0);
+
    n = display->NumConfigs;
 
    /* realloc array of ptrs */
@@ -147,7 +153,7 @@ _eglParseConfigAttribs(_EGLConfig *config, const EGLint *attrib_list)
       }
       else if (attr == EGL_RENDERABLE_TYPE) {
          EGLint renType = attrib_list[++i];
-         if (renType & ~(EGL_OPENGL_ES_BIT | EGL_OPENVG_BIT)) {
+         if (renType & ~(EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT | EGL_OPENVG_BIT)) {
             _eglError(EGL_BAD_ATTRIBUTE, "eglChooseConfig");
             return EGL_FALSE;
          }