util: update some assertions in util_resource_copy_region()
authorBrian Paul <brianp@vmware.com>
Mon, 13 Jun 2016 15:54:12 +0000 (09:54 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 13 Jun 2016 19:30:19 +0000 (13:30 -0600)
To cope with copies of compressed images which are not multiples of
the block size.  Suggested by Jose.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@sroland@vmware.com>
src/gallium/auxiliary/util/u_surface.c

index e48e47c2ec29df3fde2c84857492b8495e1bec3f..b9d2da0ab5dd3fc29ecdbfdf8c43dc6b0fc8978f 100644 (file)
@@ -332,12 +332,16 @@ util_resource_copy_region(struct pipe_context *pipe,
    /* check that region boxes are block aligned */
    assert(src_box.x % src_bw == 0);
    assert(src_box.y % src_bh == 0);
-   assert(src_box.width % src_bw == 0 || src_box.width < src_bw);
-   assert(src_box.height % src_bh == 0 || src_box.height < src_bh);
+   assert(src_box.width % src_bw == 0 ||
+          src_box.x + src_box.width == minify(src->width0, src_level, src_bw));
+   assert(src_box.height % src_bh == 0 ||
+          src_box.y + src_box.height == minify(src->height0, src_level, src_bh));
    assert(dst_box.x % dst_bw == 0);
    assert(dst_box.y % dst_bh == 0);
-   assert(dst_box.width % dst_bw == 0 || dst_box.width < dst_bw);
-   assert(dst_box.height % dst_bh == 0 || dst_box.height < src_bh);
+   assert(dst_box.width % dst_bw == 0 ||
+          dst_box.x + dst_box.width == minify(dst->width0, dst_level, dst_bw));
+   assert(dst_box.height % dst_bh == 0 ||
+          dst_box.y + dst_box.height == minify(dst->height0, dst_level, dst_bh));
 
    /* check that region boxes are not out of bounds */
    assert(src_box.x + src_box.width <=