mesa: fix errors when reading depth with glReadPixels
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 81d2fd91a9
in:
ES3-CTS.gtf.GL3Tests.packed_pixels.packed_pixels
Test uses GL_DEPTH_COMPONENT, UNSIGNED_INT only when GL_NV_read_depth
extension is present.
v2: change check in _mesa_error_check_format_and_type to be explicit
for ES 2.0+, desktop OpenGL does not allow this behaviour + uses
this function for both glReadPixels and glDrawPixels validation.
(No Piglit regressions seen with v2.)
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com> [v1]
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92009
Cc: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
parent
2e4ab489b5
commit
afa1efdc85
|
@ -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,6 +1790,10 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
|
|||
return GL_INVALID_OPERATION;
|
||||
|
||||
case GL_UNSIGNED_INT_24_8:
|
||||
/* Depth buffer OK to read in OpenGL ES (NV_read_depth). */
|
||||
if (ctx->API == API_OPENGLES2 && format == GL_DEPTH_COMPONENT)
|
||||
return GL_NO_ERROR;
|
||||
|
||||
if (format != GL_DEPTH_STENCIL) {
|
||||
return GL_INVALID_OPERATION;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue