In gen12 we use the 3DSTATE_DEPTH_BOUNDS instruction to enable depth bounds testing. Signed-off-by: Plamena Manolova <plamena.manolova@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>tags/19.3-branchpoint
| @@ -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]; | |||
| @@ -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; | |||
| @@ -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) */ | |||