Reviewed-by: Marek Olšák <mar...@gmail.com> Please cherry-pick this to the 9.1 branch (cherry-picks for Mesa should be done with the -x parameter).
Marek On Fri, Feb 8, 2013 at 10:02 PM, <j.gli...@gmail.com> wrote: > From: Jerome Glisse <jgli...@redhat.com> > > Seems that alpha test being enabled confuse the GPU on the order in > which it should perform the Z testing. So force the order programmed > throught db shader control. > > Signed-off-by: Jerome Glisse <jgli...@redhat.com> > --- > src/gallium/drivers/r600/evergreen_state.c | 5 +++++ > src/gallium/drivers/r600/r600_state.c | 5 +++++ > 2 files changed, 10 insertions(+) > > diff --git a/src/gallium/drivers/r600/evergreen_state.c > b/src/gallium/drivers/r600/evergreen_state.c > index 211c218..a610b69 100644 > --- a/src/gallium/drivers/r600/evergreen_state.c > +++ b/src/gallium/drivers/r600/evergreen_state.c > @@ -2251,6 +2251,11 @@ static void evergreen_emit_db_misc_state(struct > r600_context *rctx, struct r600_ > if (rctx->db_state.rsurf && rctx->db_state.rsurf->htile_enabled) { > /* FORCE_OFF means HiZ/HiS are determined by > DB_SHADER_CONTROL */ > db_render_override |= > S_02800C_FORCE_HIZ_ENABLE(V_02800C_FORCE_OFF); > + /* This is to fix a lockup when hyperz and alpha test are > enabled at > + * the same time some how GPU get confuse on which order to > pick for > + * z test > + */ > + db_render_override |= S_02800C_FORCE_SHADER_Z_ORDER(1); > } else { > db_render_override |= > S_02800C_FORCE_HIZ_ENABLE(V_02800C_FORCE_DISABLE); > } > diff --git a/src/gallium/drivers/r600/r600_state.c > b/src/gallium/drivers/r600/r600_state.c > index 67c4d99..2760f19 100644 > --- a/src/gallium/drivers/r600/r600_state.c > +++ b/src/gallium/drivers/r600/r600_state.c > @@ -1966,6 +1966,11 @@ static void r600_emit_db_misc_state(struct > r600_context *rctx, struct r600_atom > if (rctx->db_state.rsurf && rctx->db_state.rsurf->htile_enabled) { > /* FORCE_OFF means HiZ/HiS are determined by > DB_SHADER_CONTROL */ > db_render_override |= > S_028D10_FORCE_HIZ_ENABLE(V_028D10_FORCE_OFF); > + /* This is to fix a lockup when hyperz and alpha test are > enabled at > + * the same time some how GPU get confuse on which order to > pick for > + * z test > + */ > + db_render_override |= S_028D10_FORCE_SHADER_Z_ORDER(1); > } else { > db_render_override |= > S_028D10_FORCE_HIZ_ENABLE(V_028D10_FORCE_DISABLE); > } > -- > 1.7.11.7 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev