diff options
author | Kenneth Graunke <[email protected]> | 2019-03-22 18:00:55 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2019-07-22 16:58:09 -0700 |
commit | 6ad31c4ff33d92f6359b196a94ace99682272111 (patch) | |
tree | f0eff08a6b721ec5d56b7ed22309da35f8d2bd08 /src/egl | |
parent | fc21394bc4d4e5c3ec06675bbb26974e5550c385 (diff) |
egl: Make the 565 pbuffer-only config single buffered.
In commit dacb11a585face5ca179c34cfc588a71a425c1e0, Eric found the first
matching 565 pbuffer config, and stopped. Our double-buffered configs
come first in the list, so we added that, making a pbuffer-only config
that claimed to be double buffered. This doesn't make sense, since
pixmaps/pbuffers are fundamentally not double buffered.
When using that config, every call to eglCreatePbufferSurface would fail
with EGL_BAD_MATCH. The call chain looks like this:
- eglCreatePbufferSurface
- dri3_create_pbuffer_surface
- dri3_create_surface
- dri2_get_dri_config
which eventually does:
const bool double_buffer = surface_type == EGL_WINDOW_BIT;
and then fails to find a matching config, because it ends up looking
for a single-buffered config - and there aren't any.
To fix this, make the 565 pbuffer config single-buffered. This fixes
at least 51 dEQP-EGL.* tests.
Fixes: dacb11a585f ("egl: Add a 565 pbuffer-only EGL config under X11.")
Reviewed-by: Eric Engestrom <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/egl')
-rw-r--r-- | src/egl/drivers/dri2/platform_x11.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index 0d62f83b411..33bd027f1bc 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -862,13 +862,17 @@ dri2_x11_add_configs_for_visuals(struct dri2_egl_display *dri2_dpy, 0, }; - /* Check that we've found single-sample, no depth, no stencil. */ + /* 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)) { + __DRI_ATTRIB_SAMPLES, 0) || + !dri2_x11_config_match_attrib(dri2_dpy, config, + __DRI_ATTRIB_DOUBLE_BUFFER, 0)) { continue; } |