summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerome Glisse <jglisse@redhat.com>2010-04-23 11:56:06 +0200
committerJerome Glisse <jglisse@redhat.com>2010-04-23 11:56:06 +0200
commiteb4dc547885994cc7961f7996c33ff484f664964 (patch)
tree4bfaf6e18e26c8f8352627983259213a93a58a31
parentc37e275e778e8c944e3dfad159b1eb94c601af60 (diff)
r600: don't enable depth test if there is no depth buffer
If there is no depth buffer bound to current context don't enable depth test. GL states that if depth test is enabled without depth buffer it's as if depth buffer always pass. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
-rw-r--r--src/mesa/drivers/dri/r600/r700_state.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/r600/r700_state.c b/src/mesa/drivers/dri/r600/r700_state.c
index 12eaebbc16b..0d7cb8ecfe5 100644
--- a/src/mesa/drivers/dri/r600/r700_state.c
+++ b/src/mesa/drivers/dri/r600/r700_state.c
@@ -252,12 +252,15 @@ void r700UpdateShaderStates(GLcontext * ctx)
static void r700SetDepthState(GLcontext * ctx)
{
+ struct radeon_renderbuffer *rrb;
context_t *context = R700_CONTEXT(ctx);
R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw);
R600_STATECHANGE(context, db);
- if (ctx->Depth.Test)
+ rrb = radeon_get_depthbuffer(&context->radeon);
+
+ if (ctx->Depth.Test && rrb && rrb->bo)
{
SETbit(r700->DB_DEPTH_CONTROL.u32All, Z_ENABLE_bit);
if (ctx->Depth.Mask)