Mesa (master): egl/gbm: Fix config validation

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Oct 1 15:00:17 UTC 2019


Module: Mesa
Branch: master
Commit: 563f8974d81c3716538036781df3ecbf7e7686c0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=563f8974d81c3716538036781df3ecbf7e7686c0

Author: Robin Murphy <robin.murphy at arm.com>
Date:   Sat Sep 21 18:07:28 2019 +0100

egl/gbm: Fix config validation

In converting to shift/size-based validation, we lost a condition from
the ARGB/XRGB equivalence check, which left it working one way round
but not the other, and broke applications like glmark2-es2-drm on some
platforms. Restore the equivalent check that *both* configs actually
have an alpha channel before considering a mismatch.

Fixes: 7b4ed2b513ef ("egl: Convert configs to use shifts and sizes instead of masks")
Signed-off-by: Robin Murphy <robin.murphy at arm.com>
Reviewed-by: Adam Jackson <ajax at redhat.com>
Reviewed-by: Eric Engestrom <eric.engestrom at intel.com>

---

 src/egl/drivers/dri2/platform_drm.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c
index 7b13129ee3a..d0ab172d659 100644
--- a/src/egl/drivers/dri2/platform_drm.c
+++ b/src/egl/drivers/dri2/platform_drm.c
@@ -122,11 +122,13 @@ dri2_drm_config_is_compatible(struct dri2_egl_display *dri2_dpy,
    if (shifts[0] != visual->rgba_shifts.red ||
        shifts[1] != visual->rgba_shifts.green ||
        shifts[2] != visual->rgba_shifts.blue ||
-       (shifts[3] > -1 && shifts[3] != visual->rgba_shifts.alpha) ||
+       (shifts[3] > -1 && visual->rgba_shifts.alpha > -1 &&
+        shifts[3] != visual->rgba_shifts.alpha) ||
        sizes[0] != visual->rgba_sizes.red ||
        sizes[1] != visual->rgba_sizes.green ||
        sizes[2] != visual->rgba_sizes.blue ||
-       (sizes[3] > 0 && sizes[3] != visual->rgba_sizes.alpha) ||
+       (sizes[3] > 0 && visual->rgba_sizes.alpha > 0 &&
+        sizes[3] != visual->rgba_sizes.alpha) ||
        is_float != visual->is_float) {
       return false;
    }




More information about the mesa-commit mailing list