diff options
author | Marek Olšák <[email protected]> | 2018-05-02 21:03:44 -0400 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2018-05-24 13:41:56 -0400 |
commit | b936f9aa327ff8e10422b90cdb4bc56d8f9e8da5 (patch) | |
tree | d36fa6914c2e751ac67ffe3c77c2a53bc2905676 /src/gallium/drivers/radeonsi | |
parent | 8c1c451a9088a8a62cac447bcbadd049ee428079 (diff) |
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]>
Diffstat (limited to 'src/gallium/drivers/radeonsi')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_blit.c | 10 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_pipe.h | 2 | ||||
-rw-r--r-- | 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 6f4cd1f9044..fe059b36577 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 6917d5e6068..5d1671fb87f 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 80b1137fd0c..2605b59bbef 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; } |