[Mesa-dev] [PATCH v2 17/21] isl/surface_state: Handle ISL_AUX_USAGE_HIZ

Nanley Chery nanleychery at gmail.com
Fri Jan 13 01:34:02 UTC 2017


v2: Remove redundant x/y offset asserts (Jason Ekstrand)

Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
---
 src/intel/isl/isl_surface_state.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c
index b9093cc951..b7354781cf 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -520,6 +520,26 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
       s.AuxiliarySurfaceQPitch =
          isl_surf_get_array_pitch_sa_rows(info->aux_surf) >> 2;
       s.AuxiliarySurfaceBaseAddress = info->aux_address;
+
+      if (info->aux_usage == ISL_AUX_USAGE_HIZ) {
+         /* The number of samples must be 1 */
+         assert(info->surf->samples == 1);
+
+         /* The dimension must not be 3D */
+         assert(info->surf->dim != ISL_SURF_DIM_3D);
+
+         /* The format must be one of the following: */
+         switch (info->view->format) {
+         case ISL_FORMAT_R32_FLOAT:
+         case ISL_FORMAT_R24_UNORM_X8_TYPELESS:
+         case ISL_FORMAT_R16_UNORM:
+            break;
+         default:
+            assert(!"Incompatible HiZ Sampling format");
+            break;
+         }
+      }
+
       s.AuxiliarySurfaceMode = isl_to_gen_aux_mode[info->aux_usage];
 #else
       assert(info->aux_usage == ISL_AUX_USAGE_MCS ||
@@ -548,6 +568,15 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
          s.SamplerL2BypassModeDisable = true;
          break;
       default:
+         /* From the SKL PRM, Programming Note under Sampler Output Channel
+          * Mapping:
+          *
+          *    If a surface has an associated HiZ Auxilliary surface, the
+          *    Sampler L2 Bypass Mode Disable field in the RENDER_SURFACE_STATE
+          *    must be set.
+          */
+         if (GEN_GEN >= 9 && info->aux_usage == ISL_AUX_USAGE_HIZ)
+            s.SamplerL2BypassModeDisable = true;
          break;
       }
    }
-- 
2.11.0



More information about the mesa-dev mailing list