Looks good to me too.

Reviewed-by: Brian Paul <bri...@vmware.com>

On 02/08/2016 04:36 PM, Ian Romanick wrote:
Series is

Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>

Might wait 24 hours or so to see if anyone responsible for a non-Intel
driver has commentary... since this is shared code.

On 02/08/2016 02:38 PM, Nanley Chery wrote:
From: Nanley Chery <nanley.g.ch...@intel.com>

v2: Use gl_renderbuffer::{Width,Height} (Jason)

Cc: "11.0 11.1" <mesa-sta...@lists.freedesktop.org>
Signed-off-by: Nanley Chery <nanley.g.ch...@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;


_______________________________________________
mesa-stable mailing list
mesa-sta...@lists.freedesktop.org
https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Dstable&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=dd3NrKfL_XHyrqdlWxQir1-9ga_AoWHY9Usw18C241Q&s=YER38z62hz31sboT46OuHFaQwj9g6mKGNc_t_4Fd8ww&e=


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to