i965/miptree: Add an intel_tiling_supports_hiz helper
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 17 Jul 2017 15:01:34 +0000 (08:01 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 17 Jul 2017 20:48:38 +0000 (13:48 -0700)
We need this split for the same reason that we need the split for CCS:
intel_miptree_supports_hiz is called *before* we choose the actual
tiling.  Adding a tiling_supports_hiz helper lets choose_aux_usage
more accurately decide whether or not to enable hiz.  In particular,
this prevents us from enabling HiZ on linear depth buffers.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
src/mesa/drivers/dri/i965/intel_mipmap_tree.c

index cf5a6c056c1743ea73aba02a92461422abb6a291..8b7a3427c9ddec2e47ee95f6070762b04ba5a92e 100644 (file)
@@ -212,6 +212,15 @@ intel_miptree_supports_ccs(struct brw_context *brw,
       return true;
 }
 
+static bool
+intel_tiling_supports_hiz(const struct brw_context *brw, unsigned tiling)
+{
+   if (brw->gen < 6)
+      return false;
+
+   return tiling == I915_TILING_Y;
+}
+
 static bool
 intel_miptree_supports_hiz(struct brw_context *brw,
                            struct intel_mipmap_tree *mt)
@@ -597,7 +606,8 @@ intel_miptree_choose_aux_usage(struct brw_context *brw,
       } else {
          mt->aux_usage = ISL_AUX_USAGE_CCS_D;
       }
-   } else if (intel_miptree_supports_hiz(brw, mt)) {
+   } else if (intel_tiling_supports_hiz(brw, mt->tiling) &&
+              intel_miptree_supports_hiz(brw, mt)) {
       mt->aux_usage = ISL_AUX_USAGE_HIZ;
    }