Mesa (master): mesa/pbo: Handle zero width, height or depth when validating access

Neil Roberts nroberts at kemper.freedesktop.org
Thu Sep 3 16:03:13 UTC 2015


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

Author: Neil Roberts <neil at linux.intel.com>
Date:   Wed Sep  2 11:29:16 2015 +0100

mesa/pbo: Handle zero width, height or depth when validating access

It's legal to call glTexSubImage with zero values for the width,
height or depth. Previously this was breaking the PBO access
validation because it tries to work out the last pixel accessed by
getting the pixel at height-1 and depth-1 which would end up with
bogus values.

This was causing GL errors to be generated during the Piglit
texsubimage test, although the test was passing anyway.

v2: Also check for width == 0. Don't validate the start pointer if any
    of the dimensions are zero.
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

---

 src/mesa/main/pbo.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/mesa/main/pbo.c b/src/mesa/main/pbo.c
index 0c16025..7762324 100644
--- a/src/mesa/main/pbo.c
+++ b/src/mesa/main/pbo.c
@@ -103,6 +103,12 @@ _mesa_validate_pbo_access(GLuint dimensions,
       /* no buffer! */
       return GL_FALSE;
 
+   /* If the size of the image is zero then no pixels are accessed so we
+    * don't need to check anything else.
+    */
+   if (width == 0 || height == 0 || depth == 0)
+      return GL_TRUE;
+
    /* get the offset to the first pixel we'll read/write */
    start = _mesa_image_offset(dimensions, pack, width, height,
                               format, type, 0, 0, 0);




More information about the mesa-commit mailing list