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 <chad@chad-versace.us>
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;
}