Ver código fonte

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 <plamena.manolova@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
tags/19.3-branchpoint
Plamena Manolova 6 anos atrás
pai
commit
939ddccb7a

+ 1
- 0
src/intel/vulkan/anv_private.h Ver arquivo

@@ -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];

+ 13
- 0
src/intel/vulkan/gen8_cmd_buffer.c Ver arquivo

@@ -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;

+ 1
- 0
src/intel/vulkan/genX_pipeline.c Ver arquivo

@@ -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) */


Carregando…
Cancelar
Salvar