diff options
author | Chad Versace <[email protected]> | 2011-06-10 10:27:54 -0700 |
---|---|---|
committer | Chad Versace <[email protected]> | 2011-06-10 10:37:30 -0700 |
commit | 97d230b0bcf8ed001f685ebac314fbd8e1955718 (patch) | |
tree | 129e8dd33f8e7716592af0d7a84fa6f331111dd8 | |
parent | eca3e910edbaf3074f3e2c3afdfca1dccd52f2a1 (diff) |
i965/brw: Fix emit_depthbuffer() when packed depth/stencil texture is attached
If either depth or stencil buffer has packed depth/stencil format, then do
not use separate stencil.
Before this commit, emit_depthbuffer() incorrectly assumed that the
texture's stencil renderbuffer wrapper was a *separate* stencil buffer,
because the depth and stencil renderbuffer wrappers are distinct for
depth/stencil textures (that is, depth_irb != stencil_irb).
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38134
Signed-off-by: Chad Versace <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_misc_state.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index a6de28b3add..3d0983e6879 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -220,19 +220,13 @@ static void emit_depthbuffer(struct brw_context *brw) unsigned int len; /* - * If depth and stencil buffers are identical, then don't use separate - * stencil. + * If either depth or stencil buffer has packed depth/stencil format, + * then don't use separate stencil. Emit only a depth buffer. */ - if (depth_irb && depth_irb == stencil_irb) { + if (depth_irb && depth_irb->Base.Format == MESA_FORMAT_S8_Z24) { stencil_irb = NULL; - } - - /* - * If stencil buffer uses combined depth/stencil format, but no depth buffer - * is attached, then use stencil buffer as depth buffer. - */ - if (!depth_irb && stencil_irb - && stencil_irb->Base.Format == MESA_FORMAT_S8_Z24) { + } else if (!depth_irb && stencil_irb + && stencil_irb->Base.Format == MESA_FORMAT_S8_Z24) { depth_irb = stencil_irb; stencil_irb = NULL; } |