diff options
author | Andres Gomez <agomez@igalia.com> | 2019-10-02 18:50:38 +0300 |
---|---|---|
committer | Juan A. Suarez Romero <jasuarez@igalia.com> | 2019-10-07 16:27:07 +0200 |
commit | 142e51da08f76122176db412941972ca52b2ef7b (patch) | |
tree | f4d58dbc771c641c84a72d2d45be31f43e6449c2 | |
parent | 844c59483797502e1f45af5e43a4b12becf6af12 (diff) | |
download | mesa-142e51da08f76122176db412941972ca52b2ef7b.tar.gz |
egl: Remove the 565 pbuffer-only EGL config under X11.
The CTS finally has agreed to drop the requirement for a
565-no-depth-no-stencil config for ES 3.0. Hence we can now remove the
code to satisfy this requirement using a pbuffer-only visual with
whatever other buffers the driver happens to have given us.
This reverts commit 82607f8a900796871470ac4f1a04e154392e4898,
commit 6ad31c4ff33d92f6359b196a94ace99682272111 and
commit dacb11a585face5ca179c34cfc588a71a425c1e0.
v2:
- Reference the VK-GL-CTS issue (Eric E.).
v3:
- Don't revert
fc21394bc4d ("egl: Quiet warning about front buffer rendering for pixmaps/pbuffers")
(Kenneth).
References: VK-GL-CTS issue 1601.
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Andres Gomez <agomez@igalia.com>
Acked-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
(cherry picked from commit 02c265be9dcc5c5c23123e716ef62b384540d2fa)
[Juan A. Suarez: resolve trivial conflicts]
Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Conflicts:
src/egl/drivers/dri2/platform_x11.c
-rw-r--r-- | src/egl/drivers/dri2/platform_x11.c | 101 |
1 files changed, 4 insertions, 97 deletions
diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index b73e1970595..2b3842881ba 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -753,61 +753,9 @@ dri2_x11_authenticate(_EGLDisplay *disp, uint32_t id) return dri2_x11_do_authenticate(dri2_dpy, id); } -static bool -dri2_x11_config_match_attrib(struct dri2_egl_display *dri2_dpy, - const __DRIconfig *config, - unsigned int attrib, - unsigned int value) -{ - uint32_t config_val; - if (!dri2_dpy->core->getConfigAttrib(config, attrib, &config_val)) - return false; - return config_val == value; -} - -/** - * See if the X server can export a pixmap with the given color depth. - * - * Glamor in xorg-server 1.20 can't export pixmaps which have a different - * color depth than the root window as a DRI image. This makes it impossible - * to expose pbuffer-only visuals with, say, 16bpp on a 24bpp X display. - */ -static bool -x11_can_export_pixmap_with_bpp(struct dri2_egl_display *dri2_dpy, int bpp) -{ - bool supported = false; - -#ifdef HAVE_DRI3 - xcb_dri3_buffer_from_pixmap_cookie_t cookie; - xcb_dri3_buffer_from_pixmap_reply_t *reply; - - xcb_pixmap_t pixmap = xcb_generate_id(dri2_dpy->conn); - xcb_create_pixmap(dri2_dpy->conn, bpp, pixmap, dri2_dpy->screen->root, 1, 1); - cookie = xcb_dri3_buffer_from_pixmap(dri2_dpy->conn, pixmap); - reply = xcb_dri3_buffer_from_pixmap_reply(dri2_dpy->conn, cookie, NULL); - - if (reply) { - int *fds = xcb_dri3_buffer_from_pixmap_reply_fds(dri2_dpy->conn, reply); - - for (int i = 0; i < reply->nfd; i++) { - close(fds[i]); - } - - supported = true; - - free(reply); - } - - xcb_free_pixmap(dri2_dpy->conn, pixmap); -#endif - - return supported; -} - static EGLBoolean dri2_x11_add_configs_for_visuals(struct dri2_egl_display *dri2_dpy, - _EGLDisplay *disp, bool supports_preserved, - bool add_pbuffer_configs) + _EGLDisplay *disp, bool supports_preserved) { xcb_depth_iterator_t d; xcb_visualtype_t *visuals; @@ -883,47 +831,6 @@ dri2_x11_add_configs_for_visuals(struct dri2_egl_display *dri2_dpy, xcb_depth_next(&d); } - /* Add a 565-no-depth-no-stencil pbuffer-only config. If X11 is depth 24, - * we wouldn't have 565 available, which the CTS demands. - */ - if (add_pbuffer_configs && x11_can_export_pixmap_with_bpp(dri2_dpy, 16)) { - for (int j = 0; dri2_dpy->driver_configs[j]; j++) { - const __DRIconfig *config = dri2_dpy->driver_configs[j]; - const EGLint config_attrs[] = { - EGL_NATIVE_VISUAL_ID, 0, - EGL_NATIVE_VISUAL_TYPE, EGL_NONE, - EGL_NONE - }; - EGLint surface_type = EGL_PBUFFER_BIT; - unsigned int rgba_masks[4] = { - 0x1f << 11, - 0x3f << 5, - 0x1f << 0, - 0, - }; - - /* Check that we've found single-sample, no depth, no stencil, - * and single-buffered. - */ - if (!dri2_x11_config_match_attrib(dri2_dpy, config, - __DRI_ATTRIB_DEPTH_SIZE, 0) || - !dri2_x11_config_match_attrib(dri2_dpy, config, - __DRI_ATTRIB_STENCIL_SIZE, 0) || - !dri2_x11_config_match_attrib(dri2_dpy, config, - __DRI_ATTRIB_SAMPLES, 0) || - !dri2_x11_config_match_attrib(dri2_dpy, config, - __DRI_ATTRIB_DOUBLE_BUFFER, 0)) { - continue; - } - - if (dri2_add_config(disp, config, config_count + 1, surface_type, - config_attrs, rgba_masks)) { - config_count++; - break; - } - } - } - if (!config_count) { _eglLog(_EGL_WARNING, "DRI2: failed to create any config"); return EGL_FALSE; @@ -1388,7 +1295,7 @@ dri2_initialize_x11_swrast(_EGLDriver *drv, _EGLDisplay *disp) dri2_setup_screen(disp); - if (!dri2_x11_add_configs_for_visuals(dri2_dpy, disp, true, false)) + if (!dri2_x11_add_configs_for_visuals(dri2_dpy, disp, true)) goto cleanup; /* Fill vtbl last to prevent accidentally calling virtual function during @@ -1486,7 +1393,7 @@ dri2_initialize_x11_dri3(_EGLDriver *drv, _EGLDisplay *disp) dri2_set_WL_bind_wayland_display(drv, disp); - if (!dri2_x11_add_configs_for_visuals(dri2_dpy, disp, false, true)) + if (!dri2_x11_add_configs_for_visuals(dri2_dpy, disp, false)) goto cleanup; dri2_dpy->loader_dri3_ext.core = dri2_dpy->core; @@ -1596,7 +1503,7 @@ dri2_initialize_x11_dri2(_EGLDriver *drv, _EGLDisplay *disp) dri2_set_WL_bind_wayland_display(drv, disp); - if (!dri2_x11_add_configs_for_visuals(dri2_dpy, disp, true, false)) + if (!dri2_x11_add_configs_for_visuals(dri2_dpy, disp, true)) goto cleanup; /* Fill vtbl last to prevent accidentally calling virtual function during |