diff options
author | Jerome Glisse <[email protected]> | 2013-02-20 16:20:17 -0500 |
---|---|---|
committer | Jerome Glisse <[email protected]> | 2013-02-28 09:48:05 -0500 |
commit | 6bc7605745d53df94398b724b66db74d23d09e03 (patch) | |
tree | 8c6084c03e34775ccacb4b5fad52a0cd20c72f79 /src/gallium/drivers/r600/r600_state_common.c | |
parent | c6ae10887e46ae59c6386118d88143728eb890cc (diff) |
r600g: workaround hyperz lockup on evergreen
This work around disable hyperz if write to zbuffer is disabled. Somehow
using hyperz when not writting to the zbuffer trigger GPU lockup. See :
https://bugs.freedesktop.org/show_bug.cgi?id=60848
Candidate for 9.1
Signed-off-by: Jerome Glisse <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_state_common.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_state_common.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 1654233b756..fae28bc9511 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -284,6 +284,16 @@ static void r600_bind_dsa_state(struct pipe_context *ctx, void *state) ref.valuemask[1] = dsa->valuemask[1]; ref.writemask[0] = dsa->writemask[0]; ref.writemask[1] = dsa->writemask[1]; + if (rctx->zwritemask != dsa->zwritemask) { + rctx->zwritemask = dsa->zwritemask; + if (rctx->chip_class >= EVERGREEN) { + /* work around some issue when not writting to zbuffer + * we are having lockup on evergreen so do not enable + * hyperz when not writting zbuffer + */ + rctx->db_misc_state.atom.dirty = true; + } + } r600_set_stencil_ref(ctx, &ref); |