When the framebuffer has separate depth and stencil buffers, and HiZ is
not enabled on the depth buffer, mark the framebuffer as unsupported. This
happens when trying to create a framebuffer with Z16/S8 because we haven't
enabled HiZ on Z16 yet.

Fixes gles2conform test stencil8.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44948
Reported-by: Ian Romanick <[email protected]>
Note: This is a candiate for the 8.0 branch.
Signed-off-by: Chad Versace <[email protected]>
---
 src/mesa/drivers/dri/intel/intel_fbo.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c 
b/src/mesa/drivers/dri/intel/intel_fbo.c
index c37075c..45a6827 100644
--- a/src/mesa/drivers/dri/intel/intel_fbo.c
+++ b/src/mesa/drivers/dri/intel/intel_fbo.c
@@ -804,6 +804,15 @@ intel_validate_framebuffer(struct gl_context *ctx, struct 
gl_framebuffer *fb)
            fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
         if (stencil_mt->format != MESA_FORMAT_S8)
            fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
+        if (intel->gen < 7 && depth_mt->hiz_mt == NULL) {
+           /* Before Gen7, separate depth and stencil buffers can be used
+            * only if HiZ is enabled. From the Sandybridge PRM, Volume 2,
+            * Part 1, Bit 3DSTATE_DEPTH_BUFFER.SeparateStencilBufferEnable:
+            *     [DevSNB]: This field must be set to the same value (enabled
+            *     or disabled) as Hierarchical Depth Buffer Enable.
+            */
+           fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED;
+        }
       }
    }
 
-- 
1.7.7.4

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to