i965: Combine src/dest tex vs. rb checks in intel_copy_image_sub_data.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 20 May 2016 03:29:04 +0000 (20:29 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 25 May 2016 21:17:29 +0000 (14:17 -0700)
This simplifies things a little - now we only have one (tex or rb?)
if-ladder for src, and a second for dst, rather than four.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
src/mesa/drivers/dri/i965/intel_copy_image.c

index 834c1a7b569a49b37efde85046b569a0659a579f..a94f17196cd5116c2f8c7451c63fe381f1b841d7 100644 (file)
@@ -225,26 +225,6 @@ intel_copy_image_sub_data(struct gl_context *ctx,
 
    if (src_image) {
       src_mt = intel_texture_image(src_image)->mt;
-   } else {
-      assert(src_renderbuffer);
-      src_mt = intel_renderbuffer(src_renderbuffer)->mt;
-      src_image = src_renderbuffer->TexImage;
-   }
-
-   if (dst_image) {
-      dst_mt = intel_texture_image(dst_image)->mt;
-   } else {
-      assert(dst_renderbuffer);
-      dst_mt = intel_renderbuffer(dst_renderbuffer)->mt;
-      dst_image = dst_renderbuffer->TexImage;
-   }
-
-   if (src_mt->num_samples > 0 || dst_mt->num_samples > 0) {
-      _mesa_problem(ctx, "Failed to copy multisampled texture with meta path\n");
-      return;
-   }
-
-   if (src_image) {
       src_level = src_image->Level + src_image->TexObject->MinLevel;
 
       /* Cube maps actually have different images per face */
@@ -253,10 +233,15 @@ intel_copy_image_sub_data(struct gl_context *ctx,
 
       src_z += src_image->TexObject->MinLayer;
    } else {
+      assert(src_renderbuffer);
+      src_mt = intel_renderbuffer(src_renderbuffer)->mt;
+      src_image = src_renderbuffer->TexImage;
       src_level = 0;
    }
 
    if (dst_image) {
+      dst_mt = intel_texture_image(dst_image)->mt;
+
       dst_level = dst_image->Level + dst_image->TexObject->MinLevel;
 
       /* Cube maps actually have different images per face */
@@ -265,9 +250,17 @@ intel_copy_image_sub_data(struct gl_context *ctx,
 
       dst_z += dst_image->TexObject->MinLayer;
    } else {
+      assert(dst_renderbuffer);
+      dst_mt = intel_renderbuffer(dst_renderbuffer)->mt;
+      dst_image = dst_renderbuffer->TexImage;
       dst_level = 0;
    }
 
+   if (src_mt->num_samples > 0 || dst_mt->num_samples > 0) {
+      _mesa_problem(ctx, "Failed to copy multisampled texture with BLORP\n");
+      return;
+   }
+
    /* We are now going to try and copy the texture using the blitter.  If
     * that fails, we will fall back mapping the texture and using memcpy.
     * In either case, we need to do a full resolve.