From 523ba0a3e71107f5ac445895109808c0d820b0d0 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Wed, 16 Aug 2017 16:45:47 -0700 Subject: [PATCH] intel/genxml,isl: Add gen12 stencil buffer changes Rework: * NULL stencil buffer path (Jason) * genxml fixes (Nanley) Signed-off-by: Jordan Justen Reviewed-by: Nanley Chery --- src/intel/genxml/gen12.xml | 35 ++++++++++++++++++++++---- src/intel/isl/isl_emit_depth_stencil.c | 23 ++++++++++++++++- 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/src/intel/genxml/gen12.xml b/src/intel/genxml/gen12.xml index 77fc67098a0..609535bc1e4 100644 --- a/src/intel/genxml/gen12.xml +++ b/src/intel/genxml/gen12.xml @@ -2543,17 +2543,38 @@ - - + + - - + + + + + + + + + + - + + + + + + + + + + + + + + @@ -2969,6 +2990,10 @@ + + + + diff --git a/src/intel/isl/isl_emit_depth_stencil.c b/src/intel/isl/isl_emit_depth_stencil.c index 66a5fe1b979..382c0ce22f5 100644 --- a/src/intel/isl/isl_emit_depth_stencil.c +++ b/src/intel/isl/isl_emit_depth_stencil.c @@ -133,7 +133,15 @@ isl_genX(emit_depth_stencil_hiz_s)(const struct isl_device *dev, void *batch, #if GEN_GEN >= 7 && GEN_GEN < 12 db.StencilWriteEnable = true; #endif -#if GEN_GEN >= 8 || GEN_IS_HASWELL +#if GEN_GEN >= 12 + sb.StencilWriteEnable = true; + sb.SurfaceType = SURFTYPE_2D; + sb.Width = info->stencil_surf->logical_level0_px.width - 1; + sb.Height = info->stencil_surf->logical_level0_px.height - 1; + sb.Depth = sb.RenderTargetViewExtent = info->view->array_len - 1; + sb.SurfLOD = info->view->base_level; + sb.MinimumArrayElement = info->view->base_array_layer; +#elif GEN_GEN >= 8 || GEN_IS_HASWELL sb.StencilBufferEnable = true; #endif sb.SurfaceBaseAddress = info->stencil_address; @@ -144,6 +152,19 @@ isl_genX(emit_depth_stencil_hiz_s)(const struct isl_device *dev, void *batch, #if GEN_GEN >= 8 sb.SurfaceQPitch = isl_surf_get_array_pitch_el_rows(info->stencil_surf) >> 2; +#endif + } else { +#if GEN_GEN >= 12 + sb.SurfaceType = SURFTYPE_NULL; + + /* The docs seem to indicate that if surf-type is null, then we may need + * to match the depth-buffer value for `Depth`. It may be a + * documentation bug, since the other fields don't require this. + * + * TODO: Confirm documentation and remove seeting of `Depth` if not + * required. + */ + sb.Depth = db.Depth; #endif } -- 2.30.2