diff options
author | Eric Anholt <[email protected]> | 2011-07-12 10:57:51 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2011-07-18 11:26:33 -0700 |
commit | 79fee3a76b7f4f63d01266fc3a3cd6ca44d1e513 (patch) | |
tree | 0ca80070f945ff69816707a1fa568af8c7c7d564 /src/mesa/drivers | |
parent | fc4fba52cf7e9616c70dd76b4d6bdba6582e157b (diff) |
i915: Make stencil test for no-stencil handling match depth test.
i915_update_draw_buffers() already handles the fallback bit for
missing stencil region, so here we just need to handle whether the GL
thinks we have stencil data or not (and disable the test if so).
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/i915/i915_state.c | 32 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915/i915_vtbl.c | 3 |
2 files changed, 12 insertions, 23 deletions
diff --git a/src/mesa/drivers/dri/i915/i915_state.c b/src/mesa/drivers/dri/i915/i915_state.c index 73dda65261e..b876717f12a 100644 --- a/src/mesa/drivers/dri/i915/i915_state.c +++ b/src/mesa/drivers/dri/i915/i915_state.c @@ -843,27 +843,17 @@ i915Enable(struct gl_context * ctx, GLenum cap, GLboolean state) break; case GL_STENCIL_TEST: - { - GLboolean hw_stencil = GL_FALSE; - if (ctx->DrawBuffer) { - struct intel_renderbuffer *irbStencil - = intel_get_renderbuffer(ctx->DrawBuffer, BUFFER_STENCIL); - hw_stencil = (irbStencil && irbStencil->region); - } - if (hw_stencil) { - dw = i915->state.Ctx[I915_CTXREG_LIS5]; - if (state) - dw |= (S5_STENCIL_TEST_ENABLE | S5_STENCIL_WRITE_ENABLE); - else - dw &= ~(S5_STENCIL_TEST_ENABLE | S5_STENCIL_WRITE_ENABLE); - if (dw != i915->state.Ctx[I915_CTXREG_LIS5]) { - i915->state.Ctx[I915_CTXREG_LIS5] = dw; - I915_STATECHANGE(i915, I915_UPLOAD_CTX); - } - } - else { - FALLBACK(&i915->intel, I915_FALLBACK_STENCIL, state); - } + if (!ctx->DrawBuffer || !ctx->DrawBuffer->Visual.stencilBits) + state = false; + + dw = i915->state.Ctx[I915_CTXREG_LIS5]; + if (state) + dw |= (S5_STENCIL_TEST_ENABLE | S5_STENCIL_WRITE_ENABLE); + else + dw &= ~(S5_STENCIL_TEST_ENABLE | S5_STENCIL_WRITE_ENABLE); + if (dw != i915->state.Ctx[I915_CTXREG_LIS5]) { + i915->state.Ctx[I915_CTXREG_LIS5] = dw; + I915_STATECHANGE(i915, I915_UPLOAD_CTX); } break; diff --git a/src/mesa/drivers/dri/i915/i915_vtbl.c b/src/mesa/drivers/dri/i915/i915_vtbl.c index 95c56bc8893..bd0664bb79f 100644 --- a/src/mesa/drivers/dri/i915/i915_vtbl.c +++ b/src/mesa/drivers/dri/i915/i915_vtbl.c @@ -799,8 +799,7 @@ i915_update_draw_buffer(struct intel_context *intel) * Update depth and stencil test state */ ctx->Driver.Enable(ctx, GL_DEPTH_TEST, ctx->Depth.Test); - ctx->Driver.Enable(ctx, GL_STENCIL_TEST, - (ctx->Stencil.Enabled && fb->Visual.stencilBits > 0)); + ctx->Driver.Enable(ctx, GL_STENCIL_TEST, ctx->Stencil.Enabled); intel->vtbl.set_draw_region(intel, colorRegions, depthRegion, fb->_NumColorDrawBuffers); |