From 11e549ae3f3ce022fb22af933a7d16bbb23e3882 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Mon, 5 Jun 2017 14:30:02 +0100 Subject: [PATCH] egl/dri2: Avoid sign extension when building modifier Since the EGL attributes are signed integers, a straight OR would also perform sign extension, Fixes: 6f10e7c37a ("egl/dri2: Create EGLImages with dmabuf modifiers") Reviewed-by: Eric Engestrom Reviewed-by: Jason Ekstrand --- src/egl/drivers/dri2/egl_dri2.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index d31a0bf8e09..7175e827c9f 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -2278,9 +2278,8 @@ dri2_create_image_dma_buf(_EGLDisplay *disp, _EGLContext *ctx, * will be present in attrs.DMABufPlaneModifiersLo[0] and * attrs.DMABufPlaneModifiersHi[0] */ if (attrs.DMABufPlaneModifiersLo[0].IsPresent) { - modifier = - ((uint64_t) attrs.DMABufPlaneModifiersHi[0].Value << 32) | - attrs.DMABufPlaneModifiersLo[0].Value; + modifier = (uint64_t) attrs.DMABufPlaneModifiersHi[0].Value << 32; + modifier |= (uint64_t) (attrs.DMABufPlaneModifiersLo[0].Value & 0xffffffff); has_modifier = true; } else { modifier = DRM_FORMAT_MOD_INVALID; -- 2.30.2