From: Anuj Phogat Date: Thu, 10 Mar 2016 00:39:34 +0000 (-0800) Subject: mesa: Handle 3d block sizes in getteximage error checks X-Git-Tag: upstream/17.1.0~10310 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ec60b3da695f7a80b0efd1335aa34d0aa4ddbe9a;p=platform%2Fupstream%2Fmesa.git mesa: Handle 3d block sizes in getteximage error checks Signed-off-by: Anuj Phogat Reviewed-by: Brian Paul --- diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index 06bc8f1..4ac0ad4 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -1037,9 +1037,9 @@ dimensions_error_check(struct gl_context *ctx, /* Extra checks for compressed textures */ { - GLuint bw, bh; - _mesa_get_format_block_size(texImage->TexFormat, &bw, &bh); - if (bw > 1 || bh > 1) { + GLuint bw, bh, bd; + _mesa_get_format_block_size_3d(texImage->TexFormat, &bw, &bh, &bd); + if (bw > 1 || bh > 1 || bd > 1) { /* offset must be multiple of block size */ if (xoffset % bw != 0) { _mesa_error(ctx, GL_INVALID_VALUE, @@ -1054,7 +1054,13 @@ dimensions_error_check(struct gl_context *ctx, } } - /* The size must be a multiple of bw x bh, or we must be using a + if (zoffset % bd != 0) { + _mesa_error(ctx, GL_INVALID_VALUE, + "%s(zoffset = %d)", caller, zoffset); + return true; + } + + /* The size must be a multiple of bw x bh x bd, or we must be using a * offset+size that exactly hits the edge of the image. */ if ((width % bw != 0) && @@ -1070,6 +1076,13 @@ dimensions_error_check(struct gl_context *ctx, "%s(height = %d)", caller, height); return true; } + + if ((depth % bd != 0) && + (zoffset + depth != (GLint) texImage->Depth)) { + _mesa_error(ctx, GL_INVALID_VALUE, + "%s(depth = %d)", caller, depth); + return true; + } } }