Mesa (master): i965: fix dma_buf import with non-zero offset.

Gwenole Beauchesne gb at kemper.freedesktop.org
Tue Mar 25 18:01:36 UTC 2014


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

Author: Gwenole Beauchesne <gwenole.beauchesne at intel.com>
Date:   Mon Mar 10 16:55:21 2014 +0100

i965: fix dma_buf import with non-zero offset.

Fix eglCreateImage() from a packed dma_buf surface with a non-zero offset
to pixels data. In particular, this fixes support for planar YUV surfaces
when they are individually mapped on a per-plane basis, i.e. when the
OES_EGL_image_external is not used and user application wants to use its
own shader code for composition, or processing on individual plane (OCL).

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne at intel.com>
Reviewed-by: Eric Anholt <eric at anholt.net>

---

 src/mesa/drivers/dri/i965/intel_screen.c |    9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
index 0788a1b..8cb1260 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -646,6 +646,7 @@ intel_create_image_from_fds(__DRIscreen *screen,
 {
    struct intel_screen *intelScreen = screen->driverPrivate;
    struct intel_image_format *f;
+   uint32_t mask_x, mask_y;
    __DRIimage *image;
    int i, index;
 
@@ -679,6 +680,14 @@ intel_create_image_from_fds(__DRIscreen *screen,
       image->strides[index] = strides[index];
    }
 
+   if (f->nplanes == 1) {
+      image->offset = image->offsets[0];
+      intel_region_get_tile_masks(image->region, &mask_x, &mask_y, false);
+      if (image->offset & mask_x)
+         _mesa_warning(NULL,
+                       "intel_create_image_from_fds: offset not on tile boundary");
+   }
+
    intel_setup_image_from_dimensions(image);
 
    return image;




More information about the mesa-commit mailing list