Mesa (master): i965/wm: Program correct conservative depth modes

Chris Forbes chrisf at kemper.freedesktop.org
Sat Oct 5 22:05:56 UTC 2013


Module: Mesa
Branch: master
Commit: 4697955c5bb9882ac9be4b70ac2a7d9f03c374d1
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4697955c5bb9882ac9be4b70ac2a7d9f03c374d1

Author: Chris Forbes <chrisf at ijw.co.nz>
Date:   Sat Oct  5 21:39:25 2013 +1300

i965/wm: Program correct conservative depth modes

Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/gen7_wm_state.c |   16 ++++++++++++++--
 1 files 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 80073cd..7ddeb6e 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 <<




More information about the mesa-commit mailing list