From 4697955c5bb9882ac9be4b70ac2a7d9f03c374d1 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sat, 5 Oct 2013 21:39:25 +1300 Subject: [PATCH] i965/wm: Program correct conservative depth modes Signed-off-by: Chris Forbes Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/gen7_wm_state.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/gen7_wm_state.c b/src/mesa/drivers/dri/i965/gen7_wm_state.c index 80073cdf0e4..7ddeb6ec0a2 100644 --- a/src/mesa/drivers/dri/i965/gen7_wm_state.c +++ b/src/mesa/drivers/dri/i965/gen7_wm_state.c @@ -60,8 +60,20 @@ upload_wm_state(struct brw_context *brw) if (fp->program.Base.InputsRead & VARYING_BIT_POS) dw1 |= GEN7_WM_USES_SOURCE_DEPTH | GEN7_WM_USES_SOURCE_W; if (fp->program.Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) { - writes_depth = true; - dw1 |= GEN7_WM_PSCDEPTH_ON; + writes_depth = fp->program.FragDepthLayout != FRAG_DEPTH_LAYOUT_UNCHANGED; + + switch (fp->program.FragDepthLayout) { + case FRAG_DEPTH_LAYOUT_NONE: + case FRAG_DEPTH_LAYOUT_ANY: + dw1 |= GEN7_WM_PSCDEPTH_ON; + break; + case FRAG_DEPTH_LAYOUT_GREATER: + dw1 |= GEN7_WM_PSCDEPTH_ON_GE; + break; + case FRAG_DEPTH_LAYOUT_LESS: + dw1 |= GEN7_WM_PSCDEPTH_ON_LE; + break; + } } /* CACHE_NEW_WM_PROG */ dw1 |= brw->wm.prog_data->barycentric_interp_modes << -- 2.30.2