mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 21:40:08 +01:00
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).
This commit is contained in:
parent
fc4fba52cf
commit
79fee3a76b
2 changed files with 12 additions and 23 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue