radeonsi/gfx11: flush DB before Z/S clear to work around dEQP failures
u_blitter calls set_stream_output_targets, which flushed the context for clears. Put the workaround in the right place. Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27059>
This commit is contained in:
@@ -1175,6 +1175,12 @@ static void si_clear(struct pipe_context *ctx, unsigned buffers,
|
||||
si_mark_atom_dirty(sctx, &sctx->atoms.s.db_render_state);
|
||||
}
|
||||
|
||||
/* TODO: This hack fixes dEQP-GLES[23].functional.fragment_ops.random.* on Navi31.
|
||||
* The root cause is unknown.
|
||||
*/
|
||||
if (sctx->gfx_level == GFX11 || sctx->gfx_level == GFX11_5)
|
||||
needs_db_flush = true;
|
||||
|
||||
if (needs_db_flush) {
|
||||
sctx->flags |= SI_CONTEXT_FLUSH_AND_INV_DB;
|
||||
si_mark_atom_dirty(sctx, &sctx->atoms.s.cache_flush);
|
||||
|
||||
@@ -101,7 +101,6 @@ static void si_set_streamout_targets(struct pipe_context *ctx, unsigned num_targ
|
||||
* spec@ext_transform_feedback@immediate-reuse
|
||||
* spec@ext_transform_feedback@immediate-reuse-index-buffer
|
||||
* spec@ext_transform_feedback@immediate-reuse-uniform-buffer
|
||||
* .. and some dEQP-GLES[23].functional.fragment_ops.random.*
|
||||
*/
|
||||
if (sctx->gfx_level >= GFX11)
|
||||
si_flush_gfx_cs(sctx, 0, NULL);
|
||||
|
||||
Reference in New Issue
Block a user