On Thu, Dec 01, 2016 at 02:10:01PM -0800, Ben Widawsky wrote: > From: Ben Widawsky <b...@bwidawsk.net> > > Signed-off-by: Ben Widawsky <b...@bwidawsk.net> > --- > src/mesa/drivers/dri/i965/intel_screen.c | 20 +++++++++++++++----- > 1 file changed, 15 insertions(+), 5 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/intel_screen.c > b/src/mesa/drivers/dri/i965/intel_screen.c > index 91eb7ec..f40761a 100644 > --- a/src/mesa/drivers/dri/i965/intel_screen.c > +++ b/src/mesa/drivers/dri/i965/intel_screen.c > @@ -747,7 +747,7 @@ intel_query_image(__DRIimage *image, int attrib, int > *value) > case __DRI_IMAGE_ATTRIB_FOURCC: > return intel_lookup_fourcc(image->dri_format, value); > case __DRI_IMAGE_ATTRIB_NUM_PLANES: > - *value = 1; > + *value = image->aux_offset ? 2: 1; > return true; > case __DRI_IMAGE_ATTRIB_OFFSET: > *value = image->offset; > @@ -956,9 +956,17 @@ intel_from_planar(__DRIimage *parent, int plane, void > *loaderPrivate) > int width, height, offset, stride, dri_format, index; > struct intel_image_format *f; > __DRIimage *image; > - > - if (parent == NULL || parent->planar_format == NULL) > - return NULL; > + bool is_aux = parent->aux_offset && plane == 1; > + > + if (parent == NULL || parent->planar_format == NULL) { > + if (is_aux) { > + offset = parent->aux_offset; > + stride = ALIGN(parent->pitch / 32, 128); > + dri_format = parent->dri_format; > + goto done; > + } > + return NULL; > + } > > f = parent->planar_format; > > @@ -972,11 +980,13 @@ intel_from_planar(__DRIimage *parent, int plane, void > *loaderPrivate) > offset = parent->offsets[index]; > stride = parent->strides[index]; > > +done: > image = intel_allocate_image(parent->screen, dri_format, loaderPrivate); > if (image == NULL) > return NULL; > > - if (offset + height * stride > parent->bo->size) { > + if (!is_aux && > + offset + height * stride > parent->bo->size) {
This means that parent->bo->size is set to the size of the color region and not to the full size of color+aux. I don't think I saw yet logic in this series doing this... Anyway, small comment would probably prevent other people wondering about the same thing. What do you think? > _mesa_warning(NULL, "intel_create_sub_image: subimage out of bounds"); > free(image); > return NULL; > -- > 2.10.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev