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 <chad@chad-versace.us>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user