From 939ddccb7a541259957e883d2c9dedbe4df265ad Mon Sep 17 00:00:00 2001 From: Plamena Manolova Date: Thu, 24 Oct 2019 21:05:11 +0100 Subject: [PATCH] anv: Add support for depth bounds testing. In gen12 we use the 3DSTATE_DEPTH_BOUNDS instruction to enable depth bounds testing. Signed-off-by: Plamena Manolova Reviewed-by: Jason Ekstrand --- src/intel/vulkan/anv_private.h | 1 + src/intel/vulkan/gen8_cmd_buffer.c | 13 +++++++++++++ src/intel/vulkan/genX_pipeline.c | 1 + 3 files changed, 15 insertions(+) diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index ef246e4612e..cce986b7412 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -2886,6 +2886,7 @@ struct anv_pipeline { bool depth_clip_enable; bool sample_shading_enable; bool kill_pixel; + bool depth_bounds_test_enable; struct { uint32_t sf[7]; diff --git a/src/intel/vulkan/gen8_cmd_buffer.c b/src/intel/vulkan/gen8_cmd_buffer.c index e4f0c1410fb..58e41f29315 100644 --- a/src/intel/vulkan/gen8_cmd_buffer.c +++ b/src/intel/vulkan/gen8_cmd_buffer.c @@ -542,6 +542,19 @@ genX(cmd_buffer_flush_dynamic_state)(struct anv_cmd_buffer *cmd_buffer) } #endif +#if GEN_GEN >= 12 + if(cmd_buffer->state.gfx.dirty & (ANV_CMD_DIRTY_PIPELINE | + ANV_CMD_DIRTY_DYNAMIC_DEPTH_BOUNDS)) { + anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_DEPTH_BOUNDS), db) { + db.DepthBoundsTestValueModifyDisable = false; + db.DepthBoundsTestEnableModifyDisable = false; + db.DepthBoundsTestEnable = pipeline->depth_bounds_test_enable; + db.DepthBoundsTestMinValue = d->depth_bounds.min; + db.DepthBoundsTestMaxValue = d->depth_bounds.max; + } + } +#endif + if (cmd_buffer->state.gfx.dirty & ANV_CMD_DIRTY_DYNAMIC_LINE_STIPPLE) { anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_LINE_STIPPLE), ls) { ls.LineStipplePattern = d->line_stipple.pattern; diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c index 88f5b358faf..203b1f25310 100644 --- a/src/intel/vulkan/genX_pipeline.c +++ b/src/intel/vulkan/genX_pipeline.c @@ -1021,6 +1021,7 @@ emit_ds_state(struct anv_pipeline *pipeline, pipeline->stencil_test_enable = info.stencilTestEnable; pipeline->writes_depth = info.depthWriteEnable; pipeline->depth_test_enable = info.depthTestEnable; + pipeline->depth_bounds_test_enable = info.depthBoundsTestEnable; /* VkBool32 depthBoundsTestEnable; // optional (depth_bounds_test) */ -- 2.30.2