[Mesa-dev] [PATCH] mesa: fix errors when reading depth with glReadPixels

Tapani Pälli tapani.palli at intel.com
Tue Sep 15 00:13:11 PDT 2015


OpenGL ES 3.0 spec 3.7.2 "Transfer of Pixel Rectangles" specifies
DEPTH_COMPONENT, UNSIGNED_INT as a valid couple, validation for
internal format is checked by is_float_depth().

Fix regression caused by 81d2fd9 in following CTS test:
   ES3-CTS.gtf.GL3Tests.packed_pixels.packed_pixels

Test uses GL_DEPTH_COMPONENT, UNSIGNED_INT only when GL_NV_read_depth
extension is present.

Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92009
---
 src/mesa/main/glformats.c | 6 ++++--
 src/mesa/main/readpix.c   | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index c1d3c7d..d1f9f67 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -494,7 +494,8 @@ _mesa_bytes_per_pixel(GLenum format, GLenum type)
       else
          return -1;
    case GL_UNSIGNED_INT_24_8_EXT:
-      if (format == GL_DEPTH_STENCIL_EXT)
+      if (format == GL_DEPTH_COMPONENT ||
+          format == GL_DEPTH_STENCIL_EXT)
          return sizeof(GLuint);
       else
          return -1;
@@ -1789,7 +1790,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
       return GL_INVALID_OPERATION;
 
    case GL_UNSIGNED_INT_24_8:
-      if (format != GL_DEPTH_STENCIL) {
+      if (format != GL_DEPTH_COMPONENT &&
+          format != GL_DEPTH_STENCIL) {
          return GL_INVALID_OPERATION;
       }
       return GL_NO_ERROR;
diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
index 76ef8ee..81bb912 100644
--- a/src/mesa/main/readpix.c
+++ b/src/mesa/main/readpix.c
@@ -963,6 +963,7 @@ read_pixels_es3_error_check(GLenum format, GLenum type,
             return GL_NO_ERROR;
          break;
       case GL_UNSIGNED_SHORT:
+      case GL_UNSIGNED_INT:
       case GL_UNSIGNED_INT_24_8:
          if (!is_float_depth)
             return GL_NO_ERROR;
-- 
2.4.3



More information about the mesa-dev mailing list