i965: Add support for Z16 depth formats.

This is a squash of the following two commits.  The first caused a
regression on SNB systems without a HiZ capable DDX, and the second
fixes that regression.

    i965: Add support for Z16 depth formats.

    v2: Don't flag the format as being HiZ ready (there's DRI2 handshake
        pain to go through).

    Fixes piglit gl-3.0-required-sized-texture-formats

    NOTE: This is a candidate for the 8.0 branch.

    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
    (cherry picked from commit 2f868f1ddd)

    intel/gen6: Some framebuffers having separate depthstencil should be unsupported

    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.

    Note: This is a candiate for the 8.0 branch.
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44948
    Reviewed-and-tested-by: Ian Romanick <ian.d.romanick@intel.com>
    Reviewed--by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
    (cherry picked from commit ba5252e590)
This commit is contained in:
Eric Anholt 2011-11-17 17:11:00 -08:00 committed by Ian Romanick
parent c256fd094b
commit 4dbc544bb1
2 changed files with 10 additions and 0 deletions

View file

@ -553,6 +553,7 @@ brw_init_surface_formats(struct brw_context *brw)
ctx->TextureFormatSupported[MESA_FORMAT_X8_Z24] = true;
ctx->TextureFormatSupported[MESA_FORMAT_Z32_FLOAT] = true;
ctx->TextureFormatSupported[MESA_FORMAT_Z32_FLOAT_X24S8] = true;
ctx->TextureFormatSupported[MESA_FORMAT_Z16] = true;
}
bool

View file

@ -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;
}
}
}