gallium/util: simplify a few things in util_can_blit_via_copy_region()
authorBrian Paul <brianp@vmware.com>
Wed, 8 Jun 2016 20:41:48 +0000 (14:41 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 30 Jun 2016 20:32:06 +0000 (14:32 -0600)
Since only the src box can have negative dims for flipping, just
comparing the src/dst box sizes is enough to detect flips.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/gallium/auxiliary/util/u_surface.c

index 8d22bcfeb11456e6ceb8e58de25ff60b4dc7c926..e2229bc7d13e612967f2d51377b28e7b1a5f3164 100644 (file)
@@ -701,21 +701,20 @@ util_can_blit_via_copy_region(const struct pipe_blit_info *blit)
       return FALSE;
    }
 
-   /* No masks, no filtering, no scissor. */
+   /* No masks, no filtering, no scissor, no blending */
    if ((blit->mask & mask) != mask ||
        blit->filter != PIPE_TEX_FILTER_NEAREST ||
-       blit->scissor_enable) {
+       blit->scissor_enable ||
+       blit->alpha_blend) {
       return FALSE;
    }
 
-   /* No flipping. */
-   if (blit->src.box.width < 0 ||
-       blit->src.box.height < 0 ||
-       blit->src.box.depth < 0) {
-      return FALSE;
-   }
+   /* Only the src box can have negative dims for flipping */
+   assert(blit->dst.box.width >= 1);
+   assert(blit->dst.box.height >= 1);
+   assert(blit->dst.box.depth >= 1);
 
-   /* No scaling. */
+   /* No scaling or flipping */
    if (blit->src.box.width != blit->dst.box.width ||
        blit->src.box.height != blit->dst.box.height ||
        blit->src.box.depth != blit->dst.box.depth) {
@@ -736,9 +735,6 @@ util_can_blit_via_copy_region(const struct pipe_blit_info *blit)
       return FALSE;
    }
 
-   if (blit->alpha_blend)
-      return FALSE;
-
    return TRUE;
 }