st/mesa: Fix assertions for copying texture image to finalized miptree.
authorMichel Dänzer <michel.daenzer@amd.com>
Mon, 22 Oct 2012 17:20:56 +0000 (19:20 +0200)
committerMichel Dänzer <michel@daenzer.net>
Wed, 24 Oct 2012 15:54:25 +0000 (17:54 +0200)
The layer dimension of array textures is not subject to mipmap minification.
OTOH we were missing an assertion for the depth dimension.

Fixes assertion failures with piglit {f,v}s-textureSize-sampler1DArrayShadow.
For some reason, they only resulted in piglit 'warn' results for me, not
failures.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56211

NOTE: This is a candidate for the stable branches.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Tested-by: Andreas Boll <andreas.boll.dev@gmail.com>
src/mesa/state_tracker/st_cb_texture.c

index b19dc67bfbbeab099341703944c9e169f563e8ea..6c287b3d482793cf84d61e3fd581893666bc7e3e 100644 (file)
@@ -1120,7 +1120,10 @@ copy_image_data_to_texture(struct st_context *st,
 
       assert(src_level <= stImage->pt->last_level);
       assert(u_minify(stImage->pt->width0, src_level) == stImage->base.Width);
-      assert(u_minify(stImage->pt->height0, src_level) == stImage->base.Height);
+      assert(stImage->pt->target == PIPE_TEXTURE_1D_ARRAY ||
+             u_minify(stImage->pt->height0, src_level) == stImage->base.Height);
+      assert(stImage->pt->target == PIPE_TEXTURE_2D_ARRAY ||
+             u_minify(stImage->pt->depth0, src_level) == stImage->base.Depth);
 
       st_texture_image_copy(st->pipe,
                             stObj->pt, dstLevel,  /* dest texture, level */