i965/blorp: Take a layer range in intel_hiz_exec
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 5 Jun 2017 18:46:22 +0000 (11:46 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 7 Jun 2017 15:54:54 +0000 (08:54 -0700)
Cc: "17.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
src/mesa/drivers/dri/i965/brw_blorp.c
src/mesa/drivers/dri/i965/brw_blorp.h
src/mesa/drivers/dri/i965/brw_clear.c
src/mesa/drivers/dri/i965/intel_mipmap_tree.c
src/mesa/drivers/dri/i965/intel_mipmap_tree.h

index 5ea6b0cb1ea7bf85c33139018b86aeb302755554..0d1ccd371f803aabcb7881dd39c38baaa3149fc1 100644 (file)
@@ -1007,7 +1007,8 @@ gen6_blorp_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt,
  */
 void
 intel_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt,
-              unsigned int level, unsigned int layer, enum blorp_hiz_op op)
+               unsigned int level, unsigned int start_layer,
+               unsigned int num_layers, enum blorp_hiz_op op)
 {
    const char *opname = NULL;
 
@@ -1026,12 +1027,14 @@ intel_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt,
       break;
    }
 
-   DBG("%s %s to mt %p level %d layer %d\n",
-       __func__, opname, mt, level, layer);
+   DBG("%s %s to mt %p level %d layers %d-%d\n",
+       __func__, opname, mt, level, start_layer, start_layer + num_layers - 1);
 
    if (brw->gen >= 8) {
-      gen8_hiz_exec(brw, mt, level, layer, op);
+      for (unsigned a = 0; a < num_layers; a++)
+         gen8_hiz_exec(brw, mt, level, start_layer + a, op);
    } else {
-      gen6_blorp_hiz_exec(brw, mt, level, layer, op);
+      for (unsigned a = 0; a < num_layers; a++)
+         gen6_blorp_hiz_exec(brw, mt, level, start_layer + a, op);
    }
 }
index 8743d963abcbe108d614c3c2e3e05637f039eae9..91a2d41279f48d0816dd5c6ff3063a029e1be723 100644 (file)
@@ -70,7 +70,8 @@ brw_blorp_resolve_color(struct brw_context *brw,
 
 void
 intel_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt,
-              unsigned int level, unsigned int layer, enum blorp_hiz_op op);
+               unsigned int level, unsigned int start_layer,
+               unsigned int num_layers, enum blorp_hiz_op op);
 
 void gen4_blorp_exec(struct blorp_batch *batch,
                      const struct blorp_params *params);
index adaf250f746ccebb2cb5ea6875e23fb4d5a175d3..f42ea3860e3e829b4e8da5c7ef8887b00289afe3 100644 (file)
@@ -208,13 +208,11 @@ brw_fast_clear_depth(struct gl_context *ctx)
    }
 
    if (fb->MaxNumLayers > 0) {
-      for (unsigned layer = 0; layer < depth_irb->layer_count; layer++) {
-         intel_hiz_exec(brw, mt, depth_irb->mt_level,
-                        depth_irb->mt_layer + layer,
-                        BLORP_HIZ_OP_DEPTH_CLEAR);
-      }
+      intel_hiz_exec(brw, mt, depth_irb->mt_level,
+                     depth_irb->mt_layer, depth_irb->layer_count,
+                     BLORP_HIZ_OP_DEPTH_CLEAR);
    } else {
-      intel_hiz_exec(brw, mt, depth_irb->mt_level, depth_irb->mt_layer,
+      intel_hiz_exec(brw, mt, depth_irb->mt_level, depth_irb->mt_layer, 1,
                      BLORP_HIZ_OP_DEPTH_CLEAR);
    }
 
index 9e9c1d08f01a7b3c6d194925af83c9c0142b98ed..160588c02961d60acff5f55fd73a37656186c9fa 100644 (file)
@@ -1991,7 +1991,7 @@ intel_miptree_slice_resolve(struct brw_context *brw,
    if (!item || item->need != need)
       return false;
 
-   intel_hiz_exec(brw, mt, level, layer, need);
+   intel_hiz_exec(brw, mt, level, layer, 1, need);
    intel_resolve_map_remove(item);
    return true;
 }
@@ -2027,7 +2027,7 @@ intel_miptree_all_slices_resolve(struct brw_context *brw,
       if (map->need != need)
         continue;
 
-      intel_hiz_exec(brw, mt, map->level, map->layer, need);
+      intel_hiz_exec(brw, mt, map->level, map->layer, 1, need);
       intel_resolve_map_remove(map);
       did_resolve = true;
    }
index 546d904b0beaf2a9cc15b9d08fa62c214ea049d5..b3bd70d7edb20dc7da30c393b9bfef698235dff8 100644 (file)
@@ -1001,10 +1001,6 @@ intel_miptree_unmap(struct brw_context *brw,
                    unsigned int level,
                    unsigned int slice);
 
-void
-intel_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt,
-              unsigned int level, unsigned int layer, enum blorp_hiz_op op);
-
 bool
 intel_miptree_sample_with_hiz(struct brw_context *brw,
                               struct intel_mipmap_tree *mt);