[Mesa-dev] [PATCH 12/21] i965: Return whether the miptree was resolved from intel_miptree_resolve_color().

Francisco Jerez currojerez at riseup.net
Sat Jul 23 03:59:06 UTC 2016


This will allow optimizing out the cache flush in some cases when
resolving wasn't necessary.
---
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 12 ++++++++----
 src/mesa/drivers/dri/i965/intel_mipmap_tree.h |  2 +-
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index 1e03f7e..d53fd74 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -2151,7 +2151,7 @@ intel_miptree_all_slices_resolve_depth(struct brw_context *brw,
 }
 
 
-void
+bool
 intel_miptree_resolve_color(struct brw_context *brw,
                             struct intel_mipmap_tree *mt,
                             int flags)
@@ -2162,21 +2162,25 @@ intel_miptree_resolve_color(struct brw_context *brw,
     */
    if ((flags & INTEL_MIPTREE_IGNORE_CCS_E) &&
        intel_miptree_is_lossless_compressed(brw, mt))
-      return;
+      return false;
 
    switch (mt->fast_clear_state) {
    case INTEL_FAST_CLEAR_STATE_NO_MCS:
    case INTEL_FAST_CLEAR_STATE_RESOLVED:
       /* No resolve needed */
-      break;
+      return false;
    case INTEL_FAST_CLEAR_STATE_UNRESOLVED:
    case INTEL_FAST_CLEAR_STATE_CLEAR:
       /* Fast color clear resolves only make sense for non-MSAA buffers. */
       if (mt->msaa_layout == INTEL_MSAA_LAYOUT_NONE ||
           intel_miptree_is_lossless_compressed(brw, mt)) {
          brw_blorp_resolve_color(brw, mt);
+         return true;
+      } else {
+         return false;
       }
-      break;
+   default:
+      unreachable("Invalid fast clear state");
    }
 }
 
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
index 4388741..f3bc9e1 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
@@ -942,7 +942,7 @@ intel_miptree_used_for_rendering(struct intel_mipmap_tree *mt)
  */
 #define INTEL_MIPTREE_IGNORE_CCS_E (1 << 0)
 
-void
+bool
 intel_miptree_resolve_color(struct brw_context *brw,
                             struct intel_mipmap_tree *mt,
                             int flags);
-- 
2.9.0



More information about the mesa-dev mailing list