mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 21:40:08 +01:00
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@intel.com> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
1c29068074
commit
3bd65dc8a1
1 changed files with 9 additions and 0 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue