Module: Mesa Branch: master Commit: b936f9aa327ff8e10422b90cdb4bc56d8f9e8da5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b936f9aa327ff8e10422b90cdb4bc56d8f9e8da5
Author: Marek Olšák <[email protected]> Date: Wed May 2 21:03:44 2018 -0400 radeonsi: disable primitive binning for all blitter ops same as amdvlk. Tested-by: Dieter Nützel <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]> --- src/gallium/drivers/radeonsi/si_blit.c | 10 ++++++++++ src/gallium/drivers/radeonsi/si_pipe.h | 2 +- src/gallium/drivers/radeonsi/si_state_binning.c | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c index 6f4cd1f904..fe059b3657 100644 --- a/src/gallium/drivers/radeonsi/si_blit.c +++ b/src/gallium/drivers/radeonsi/si_blit.c @@ -75,10 +75,20 @@ void si_blitter_begin(struct si_context *sctx, enum si_blitter_op op) if (op & SI_DISABLE_RENDER_COND) sctx->render_cond_force_off = true; + + if (sctx->screen->dpbb_allowed) { + sctx->dpbb_force_off = true; + si_mark_atom_dirty(sctx, &sctx->atoms.s.dpbb_state); + } } void si_blitter_end(struct si_context *sctx) { + if (sctx->screen->dpbb_allowed) { + sctx->dpbb_force_off = false; + si_mark_atom_dirty(sctx, &sctx->atoms.s.dpbb_state); + } + sctx->render_cond_force_off = false; /* Restore shader pointers because the VS blit shader changed all diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h index 6917d5e606..5d1671fb87 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.h +++ b/src/gallium/drivers/radeonsi/si_pipe.h @@ -927,7 +927,7 @@ struct si_context { /* Other state */ bool need_check_render_feedback; bool decompression_enabled; - + bool dpbb_force_off; bool vs_writes_viewport_index; bool vs_disables_clipping_viewport; diff --git a/src/gallium/drivers/radeonsi/si_state_binning.c b/src/gallium/drivers/radeonsi/si_state_binning.c index 80b1137fd0..2605b59bbe 100644 --- a/src/gallium/drivers/radeonsi/si_state_binning.c +++ b/src/gallium/drivers/radeonsi/si_state_binning.c @@ -343,7 +343,7 @@ void si_emit_dpbb_state(struct si_context *sctx) assert(sctx->chip_class >= GFX9); - if (!sscreen->dpbb_allowed || !blend || !dsa) { + if (!sscreen->dpbb_allowed || !blend || !dsa || sctx->dpbb_force_off) { si_emit_dpbb_disable(sctx); return; } _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
