egl_dri2: Remove depth argument from dri2_add_config()
authorKristian Høgsberg <krh@bitplanet.net>
Sun, 15 Sep 2013 06:13:22 +0000 (23:13 -0700)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 16 Oct 2013 05:07:52 +0000 (22:07 -0700)
All callers now use the more correct rgba mask mechanism for filtering
out mathcing DRI configs.  Even if depth and buffer size match, the
color component layout can be different, or in case or ARGB8888 and
ARGB2101010 the color components can even be different sizes.

Since anything that the depth check would reject is also rejected by
the rgba mask comparison, the depth parameter is redundant and not
specific enough.  We should probably have removed it when the rgba
masks argument was introduced, but better late than never.

Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
src/egl/drivers/dri2/egl_dri2.c
src/egl/drivers/dri2/egl_dri2.h
src/egl/drivers/dri2/platform_android.c
src/egl/drivers/dri2/platform_drm.c
src/egl/drivers/dri2/platform_wayland.c
src/egl/drivers/dri2/platform_x11.c

index 1089616946decde9eab0be7dbb74d62d17e3a315..b29eb1c1cbf628e6678c41a066514524dda16ed6 100644 (file)
@@ -116,7 +116,7 @@ dri2_match_config(const _EGLConfig *conf, const _EGLConfig *criteria)
 
 struct dri2_egl_config *
 dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
-               int depth, EGLint surface_type, const EGLint *attr_list,
+               EGLint surface_type, const EGLint *attr_list,
                const unsigned int *rgba_masks)
 {
    struct dri2_egl_config *conf;
@@ -200,16 +200,6 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
       for (i = 0; attr_list[i] != EGL_NONE; i += 2)
          _eglSetConfigKey(&base, attr_list[i], attr_list[i+1]);
 
-   /* Allow a 24-bit RGB visual to match a 32-bit RGBA EGLConfig.  Otherwise
-    * it will only match a 32-bit RGBA visual.  On a composited window manager
-    * on X11, this will make all of the EGLConfigs with destination alpha get
-    * blended by the compositor.  This is probably not what the application
-    * wants... especially on drivers that only have 32-bit RGBA EGLConfigs!
-    */
-   if (depth > 0 && depth != base.BufferSize
-       && !(depth == 24 && base.BufferSize == 32))
-      return NULL;
-
    if (rgba_masks && memcmp(rgba_masks, dri_masks, sizeof(dri_masks)))
       return NULL;
 
index fba5f81af8c26a80d71ef88112f7ba1a0c1d15eb..4a39efbde095e9f4c9a01a3397bf98fc3cf9932b 100644 (file)
@@ -246,7 +246,7 @@ dri2_lookup_egl_image(__DRIscreen *screen, void *image, void *data);
 
 struct dri2_egl_config *
 dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
-               int depth, EGLint surface_type, const EGLint *attr_list,
+               EGLint surface_type, const EGLint *attr_list,
                const unsigned int *rgba_masks);
 
 _EGLImage *
index ff41e83ba685569819df84f86d8c21c96f2892fd..2c20de786b5c77110a9bd4d9b079b70393e5fbcc 100644 (file)
@@ -547,14 +547,13 @@ droid_add_configs_for_visuals(_EGLDriver *drv, _EGLDisplay *dpy)
    struct dri2_egl_display *dri2_dpy = dri2_egl_display(dpy);
    const struct {
       int format;
-      int size;
       unsigned int rgba_masks[4];
    } visuals[] = {
-      { HAL_PIXEL_FORMAT_RGBA_8888, 32, { 0xff, 0xff00, 0xff0000, 0xff000000 } },
-      { HAL_PIXEL_FORMAT_RGBX_8888, 32, { 0xff, 0xff00, 0xff0000, 0x0 } },
-      { HAL_PIXEL_FORMAT_RGB_888,   24, { 0xff, 0xff00, 0xff0000, 0x0 } },
-      { HAL_PIXEL_FORMAT_RGB_565,   16, { 0xf800, 0x7e0, 0x1f, 0x0 } },
-      { HAL_PIXEL_FORMAT_BGRA_8888, 32, { 0xff0000, 0xff00, 0xff, 0xff000000 } },
+      { HAL_PIXEL_FORMAT_RGBA_8888, { 0xff, 0xff00, 0xff0000, 0xff000000 } },
+      { HAL_PIXEL_FORMAT_RGBX_8888, { 0xff, 0xff00, 0xff0000, 0x0 } },
+      { HAL_PIXEL_FORMAT_RGB_888,   { 0xff, 0xff00, 0xff0000, 0x0 } },
+      { HAL_PIXEL_FORMAT_RGB_565,   { 0xf800, 0x7e0, 0x1f, 0x0 } },
+      { HAL_PIXEL_FORMAT_BGRA_8888, { 0xff0000, 0xff00, 0xff, 0xff000000 } },
       { 0, 0, { 0, 0, 0, 0 } }
    };
    int count, i, j;
@@ -576,8 +575,7 @@ droid_add_configs_for_visuals(_EGLDriver *drv, _EGLDisplay *dpy)
             continue;
 
          dri2_conf = dri2_add_config(dpy, dri2_dpy->driver_configs[j],
-               count + 1, visuals[i].size, surface_type, NULL,
-               visuals[i].rgba_masks);
+               count + 1, surface_type, NULL, visuals[i].rgba_masks);
          if (dri2_conf) {
             dri2_conf->base.NativeVisualID = visuals[i].format;
             dri2_conf->base.NativeVisualType = visuals[i].format;
index 615648b9e993810bd4f4936f76ae991ab2a4df66..fb28bd91c0a682b0dc33d1d158d4a2633954ccce 100644 (file)
@@ -478,7 +478,7 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
 
    for (i = 0; dri2_dpy->driver_configs[i]; i++)
       dri2_add_config(disp, dri2_dpy->driver_configs[i],
-                      i + 1, 0, EGL_WINDOW_BIT, NULL, NULL);
+                      i + 1, EGL_WINDOW_BIT, NULL, NULL);
 
    drv->API.CreateWindowSurface = dri2_create_window_surface;
    drv->API.DestroySurface = dri2_destroy_surface;
index fc21892813d3c344af3e9203ac7a6ddd14539150..c0de16b96b2267d2fe0c6f7e49cee03a3492744b 100644 (file)
@@ -821,11 +821,11 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
    for (i = 0; dri2_dpy->driver_configs[i]; i++) {
       config = dri2_dpy->driver_configs[i];
       if (dri2_dpy->formats & HAS_XRGB8888)
-        dri2_add_config(disp, config, i + 1, 0, types, NULL, rgb_masks);
+        dri2_add_config(disp, config, i + 1, types, NULL, rgb_masks);
       if (dri2_dpy->formats & HAS_ARGB8888)
-        dri2_add_config(disp, config, i + 1, 0, types, NULL, argb_masks);
+        dri2_add_config(disp, config, i + 1, types, NULL, argb_masks);
       if (dri2_dpy->formats & HAS_RGB565)
-        dri2_add_config(disp, config, i + 1, 0, types, NULL, rgb565_masks);
+        dri2_add_config(disp, config, i + 1, types, NULL, rgb565_masks);
    }
 
    disp->Extensions.WL_bind_wayland_display = EGL_TRUE;
index d1ceb6238efa1d19d141b36d111f201c10e2ff1f..a518db17a1efc369c55d94dff09d8805c4f979be 100644 (file)
@@ -666,7 +666,7 @@ dri2_add_configs_for_visuals(struct dri2_egl_display *dri2_dpy,
             rgba_masks[2] = visuals[i].blue_mask;
             rgba_masks[3] = 0;
            dri2_add_config(disp, dri2_dpy->driver_configs[j], id++,
-                           0, surface_type, config_attrs, rgba_masks);
+                           surface_type, config_attrs, rgba_masks);
 
             /* Allow a 24-bit RGB visual to match a 32-bit RGBA EGLConfig.
              * Otherwise it will only match a 32-bit RGBA visual.  On a
@@ -679,7 +679,7 @@ dri2_add_configs_for_visuals(struct dri2_egl_display *dri2_dpy,
                rgba_masks[3] =
                   ~(rgba_masks[0] | rgba_masks[1] | rgba_masks[2]);
                dri2_add_config(disp, dri2_dpy->driver_configs[j], id++,
-                               0, surface_type, config_attrs, rgba_masks);
+                               surface_type, config_attrs, rgba_masks);
             }
         }
       }