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

Author: Maciej Cencora <m.cenc...@gmail.com>
Date:   Tue Feb 17 13:30:33 2009 +0100

r300: fix depth write regression (found by Nicolai Haehnle)

Signed-off-by: Nicolai Haehnle <nhaeh...@gmail.com>

---

 src/mesa/drivers/dri/r300/r300_state.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_state.c 
b/src/mesa/drivers/dri/r300/r300_state.c
index 8361afa..8095538 100644
--- a/src/mesa/drivers/dri/r300/r300_state.c
+++ b/src/mesa/drivers/dri/r300/r300_state.c
@@ -2234,7 +2234,7 @@ static void r300ResetHwState(r300ContextPtr r300)
 
        /* disable fog unit */
        r300->hw.fogs.cmd[R300_FOGS_STATE] = 0;
-       r300->hw.fg_depth_src.cmd[1] = R300_FG_DEPTH_SRC_SHADER;
+       r300->hw.fg_depth_src.cmd[1] = R300_FG_DEPTH_SRC_SCAN;
 
        r300->hw.rb3d_cctl.cmd[1] = 0;
 
@@ -2539,18 +2539,25 @@ void r300UpdateShaderStates(r300ContextPtr rmesa)
 
        /* w_fmt value is set to get best performance
         * see p.130 R5xx 3D acceleration guide v1.3 */
-       GLuint w_fmt;
+       GLuint w_fmt, fgdepthsrc;
        if (current_fragment_program_writes_depth(ctx)) {
+               fgdepthsrc = R300_FG_DEPTH_SRC_SHADER;
                w_fmt = R300_W_FMT_W24 | R300_W_SRC_US;
        } else {
+               fgdepthsrc = R300_FG_DEPTH_SRC_SCAN;
                w_fmt = R300_W_FMT_W0 | R300_W_SRC_US;
        }
-       
+
        if (w_fmt != rmesa->hw.us_out_fmt.cmd[5]) {
                R300_STATECHANGE(rmesa, us_out_fmt);
                rmesa->hw.us_out_fmt.cmd[5] = w_fmt;
        }
 
+       if (fgdepthsrc != rmesa->hw.fg_depth_src.cmd[1]) {
+               R300_STATECHANGE(rmesa, fg_depth_src);
+               rmesa->hw.fg_depth_src.cmd[1] = fgdepthsrc;
+       }
+
        if (rmesa->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV515)
                r500SetupPixelShader(rmesa);
        else

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to