i965/gen5,6: Fix hang when emitting hiz buffer without stencil buffer
authorChad Versace <chad@chad-versace.us>
Thu, 9 Jun 2011 04:51:10 +0000 (21:51 -0700)
committerChad Versace <chad@chad-versace.us>
Wed, 15 Jun 2011 22:47:59 +0000 (15:47 -0700)
commitd105f6684dfbfe596e57ddeb9377e7f9e4e57dcb
tree81940a8a97836dfd18b297f4b1d133a1d44b18cd
parent6f243ec25d88589747c7a595903e201b90a4d767
i965/gen5,6: Fix hang when emitting hiz buffer without stencil buffer

When emitting either a hiz or stencil buffer, the 'separate stencil
enable' and 'hiz enable' bits are set in 3DSTATE_DEPTH_BUFFER. Therefore
we must emit both 3DSTATE_HIER_DEPTH_BUFFER and 3DSTATE_STENCIL_BUFFER.

Even if there is no stencil buffer, 3DSTATE_STENCIL_BUFFER must be
emitted; failure to do so causes a hang on gen5 and a stall on gen6.

This also fixes a silly, obvious segfault that occured when a hiz buffer
xor separate stencil buffer existed.

Fixes the piglit tests below on Gen5 when hiz and separate stencil are
manually enabled:
    fbo-alphatest-nocolor
    fbo-depth-sample-compare
    fbo
    hiz-depth-read-fbo-d24-s0
    hiz-depth-stencil-test-fbo-d24-s0
    hiz-depth-test-fbo-d24-s0
    hiz-stencil-read-fbo-d0-s8
    hiz-stencil-test-fbo-d0-s8
    fbo-missing-attachment-clear
    fbo-clear-formats
    fbo-depth-*

Changes piglit test result from crash to fail:
    hiz-depth-stencil-test-fbo-d0-s8

Signed-off-by: Chad Versace <chad@chad-versace.us>
src/mesa/drivers/dri/i965/brw_misc_state.c