[Mesa-stable] [Mesa-dev] [PATCH 1/4] mesa/image: Make _mesa_clip_readpixels() work with renderbuffers
Lofstedt, Marta
marta.lofstedt at intel.com
Tue Feb 9 12:22:39 CET 2016
Thanks Nanley,
I confirm that this patch-set fix the Bugzilla:92193
/Marta
> -----Original Message-----
> From: mesa-dev [mailto:mesa-dev-bounces at lists.freedesktop.org] On
> Behalf Of Nanley Chery
> Sent: Monday, February 8, 2016 11:38 PM
> To: mesa-dev at lists.freedesktop.org
> Cc: 11.0 11.1 <mesa-stable at lists.freedesktop.org>; Chery, Nanley G
> <nanley.g.chery at intel.com>
> Subject: [Mesa-dev] [PATCH 1/4] mesa/image: Make
> _mesa_clip_readpixels() work with renderbuffers
>
> From: Nanley Chery <nanley.g.chery at intel.com>
>
> v2: Use gl_renderbuffer::{Width,Height} (Jason)
>
> Cc: "11.0 11.1" <mesa-stable at lists.freedesktop.org>
> Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
> ---
> src/mesa/main/image.c | 22 +++++++++++++++++-----
> 1 file changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c index
> e79e3e6..99f253c 100644
> --- a/src/mesa/main/image.c
> +++ b/src/mesa/main/image.c
> @@ -670,7 +670,7 @@ _mesa_clip_drawpixels(const struct gl_context *ctx,
> * so that the image region is entirely within the window bounds.
> * Note: this is different from _mesa_clip_drawpixels() in that the
> * scissor box is ignored, and we use the bounds of the current readbuffer
> - * surface.
> + * surface or the attached image.
> *
> * \return GL_TRUE if region to read is in bounds
> * GL_FALSE if region is completely out of bounds (nothing to read)
> @@ -682,6 +682,18 @@ _mesa_clip_readpixels(const struct gl_context *ctx,
> struct gl_pixelstore_attrib *pack) {
> const struct gl_framebuffer *buffer = ctx->ReadBuffer;
> + struct gl_renderbuffer *rb = buffer->_ColorReadBuffer;
> + GLsizei clip_width;
> + GLsizei clip_height;
> +
> + if (rb) {
> + clip_width = rb->Width;
> + clip_height = rb->Height;
> + } else {
> + clip_width = buffer->Width;
> + clip_height = buffer->Height;
> + }
> +
>
> if (pack->RowLength == 0) {
> pack->RowLength = *width;
> @@ -694,8 +706,8 @@ _mesa_clip_readpixels(const struct gl_context *ctx,
> *srcX = 0;
> }
> /* right clipping */
> - if (*srcX + *width > (GLsizei) buffer->Width)
> - *width -= (*srcX + *width - buffer->Width);
> + if (*srcX + *width > clip_width)
> + *width -= (*srcX + *width - clip_width);
>
> if (*width <= 0)
> return GL_FALSE;
> @@ -707,8 +719,8 @@ _mesa_clip_readpixels(const struct gl_context *ctx,
> *srcY = 0;
> }
> /* top clipping */
> - if (*srcY + *height > (GLsizei) buffer->Height)
> - *height -= (*srcY + *height - buffer->Height);
> + if (*srcY + *height > clip_height)
> + *height -= (*srcY + *height - clip_height);
>
> if (*height <= 0)
> return GL_FALSE;
> --
> 2.7.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-stable
mailing list