On gen5-6, SeparateStencilBufferEnable and HierarchicalDepthBufferEnable come hand in hand and we have to set either both or neither. --- src/intel/isl/isl_emit_depth_stencil.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/intel/isl/isl_emit_depth_stencil.c b/src/intel/isl/isl_emit_depth_stencil.c index 41a01be..385c83d 100644 --- a/src/intel/isl/isl_emit_depth_stencil.c +++ b/src/intel/isl/isl_emit_depth_stencil.c @@ -113,6 +113,16 @@ isl_genX(emit_depth_stencil_hiz_s)(const struct isl_device *dev, void *batch, #endif } +#if GEN_GEN == 5 || GEN_GEN == 6 + const bool separate_stencil = + info->stencil_surf && info->stencil_surf->format == ISL_FORMAT_R8_UINT; + if (separate_stencil || info->hiz_usage == ISL_AUX_USAGE_HIZ) { + assert(ISL_DEV_USE_SEPARATE_STENCIL(dev)); + db.SeparateStencilBufferEnable = true; + db.HierarchicalDepthBufferEnable = true; + } +#endif + #if GEN_GEN >= 6 struct GENX(3DSTATE_STENCIL_BUFFER) sb = { GENX(3DSTATE_STENCIL_BUFFER_header), @@ -151,9 +161,6 @@ isl_genX(emit_depth_stencil_hiz_s)(const struct isl_device *dev, void *batch, info->hiz_usage == ISL_AUX_USAGE_HIZ); if (info->hiz_usage == ISL_AUX_USAGE_HIZ) { db.HierarchicalDepthBufferEnable = true; -#if GEN_GEN == 5 || GEN_GEN == 6 - db.SeparateStencilBufferEnable = true; -#endif hiz.SurfaceBaseAddress = info->hiz_address; hiz.HierarchicalDepthBufferMOCS = info->mocs; -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev