Mesa (master): egl/dri2: Avoid sign extension when building modifier

Daniel Stone daniels at kemper.freedesktop.org
Thu Jun 8 21:27:33 UTC 2017


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

Author: Daniel Stone <daniels at collabora.com>
Date:   Mon Jun  5 14:30:02 2017 +0100

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 <eric.engestrom at imgtec.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

---

 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 d31a0bf8e0..7175e827c9 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;




More information about the mesa-commit mailing list