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 f39d7460b20d7e7f99ef7abaa34673d5b12992ae..6081c337864244e523c6f3e481cbbe82ceef69ed 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.