r300: disable ZTOP only when occlusion queries are used
authorMaciej Cencora <m.cencora@gmail.com>
Sun, 16 Aug 2009 00:04:29 +0000 (02:04 +0200)
committerMaciej Cencora <m.cencora@gmail.com>
Sun, 16 Aug 2009 00:04:29 +0000 (02:04 +0200)
src/mesa/drivers/dri/r300/r300_state.c

index f39d746..6081c33 100644 (file)
@@ -462,7 +462,7 @@ static GLboolean current_fragment_program_writes_depth(GLcontext* ctx)
 static void r300SetEarlyZState(GLcontext * ctx)
 {
        r300ContextPtr r300 = R300_CONTEXT(ctx);
-       GLuint topZ = R300_ZTOP_DISABLE;
+       GLuint topZ = R300_ZTOP_ENABLE;
        GLuint w_fmt, fgdepthsrc;
 
        if (ctx->Color.AlphaEnabled && ctx->Color.AlphaFunc != GL_ALWAYS)
@@ -471,6 +471,8 @@ static void r300SetEarlyZState(GLcontext * ctx)
                topZ = R300_ZTOP_DISABLE;
        else if (ctx->FragmentProgram._Current && ctx->FragmentProgram._Current->UsesKill)
                topZ = R300_ZTOP_DISABLE;
+       else if (r300->query.current)
+               topZ = R300_ZTOP_DISABLE;
 
        if (topZ != r300->hw.zstencil_format.cmd[2]) {
                /* Note: This completely reemits the stencil format.