[Mesa-dev] [PATCH] mesa: fix errors when reading depth with glReadPixels
Samuel Iglesias Gonsálvez
siglesias at igalia.com
Tue Sep 15 00:26:29 PDT 2015
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
On 15/09/15 09:13, Tapani Pälli wrote:
> 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;
>
More information about the mesa-dev
mailing list