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: 7b4ed2b513
("egl: Convert configs to use shifts and sizes instead of masks")
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
This commit is contained in:

committed by
Eric Engestrom

parent
4943c89d6d
commit
563f8974d8
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user