[Mesa-dev] [PATCH 2/7] i965: Combine src/dest tex vs. rb checks in intel_copy_image_sub_data.

Kenneth Graunke kenneth at whitecape.org
Sat May 21 01:35:46 UTC 2016


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 at whitecape.org>
---
 src/mesa/drivers/dri/i965/intel_copy_image.c | 33 +++++++++++-----------------
 1 file changed, 13 insertions(+), 20 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_copy_image.c b/src/mesa/drivers/dri/i965/intel_copy_image.c
index 0e72672..282e9ae 100644
--- a/src/mesa/drivers/dri/i965/intel_copy_image.c
+++ b/src/mesa/drivers/dri/i965/intel_copy_image.c
@@ -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,
       else
          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,
       else
          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.
-- 
2.8.2



More information about the mesa-dev mailing list