mesa: Handle 3d block sizes in getteximage error checks
Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user