diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index ad0a62e..2d6b0c5 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -3531,9 +3531,11 @@ void evergreen_update_db_shader_control(struct r600_context * rctx) * write to the zbuffer. Write to zbuffer is delayed after fragment shader * execution and thus after alpha test so if discarded by the alpha test * the z value is not written. + * If alpha test is enabled perform z test after fragment. RE_Z (early + * z test but no write to the zbuffer) seems to cause lockups. */ if (rctx->alphatest_state.sx_alpha_test_control) { - db_shader_control |= S_02880C_Z_ORDER(V_02880C_RE_Z); + db_shader_control |= S_02880C_Z_ORDER(V_02880C_LATE_Z); } else { db_shader_control |= S_02880C_Z_ORDER(V_02880C_EARLY_Z_THEN_LATE_Z); }