radeonsi: don't flush CS before and after every blitter invocation
u_blitter always calls set_stream_output_targets before and after clears and blits, which always flushes here. Strengthen the flushing condition and add an early exit. No clue why this fixes the test. 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:
@@ -151,5 +151,4 @@ KHR-GL46.transform_feedback_overflow_query_ARB.multiple-streams-multiple-buffers
|
||||
KHR-GL46.transform_feedback_overflow_query_ARB.multiple-streams-one-buffer-per-stream,Fail
|
||||
|
||||
# I saw these on Navi31, but not Navi33
|
||||
dEQP-GLES3.functional.fragment_ops.interaction.basic_shader.39,Fail
|
||||
dEQP-GLES3.functional.fragment_ops.interaction.basic_shader.94,Fail
|
||||
|
|
@@ -64,6 +64,9 @@ static void si_set_streamout_targets(struct pipe_context *ctx, unsigned num_targ
|
||||
unsigned old_num_targets = sctx->streamout.num_targets;
|
||||
unsigned i;
|
||||
|
||||
if (!old_num_targets && !num_targets)
|
||||
return;
|
||||
|
||||
/* We are going to unbind the buffers. Mark which caches need to be flushed. */
|
||||
if (old_num_targets && sctx->streamout.begin_emitted) {
|
||||
/* Stop streamout. */
|
||||
@@ -102,7 +105,7 @@ static void si_set_streamout_targets(struct pipe_context *ctx, unsigned num_targ
|
||||
* spec@ext_transform_feedback@immediate-reuse-index-buffer
|
||||
* spec@ext_transform_feedback@immediate-reuse-uniform-buffer
|
||||
*/
|
||||
if (sctx->gfx_level >= GFX11)
|
||||
if (sctx->gfx_level >= GFX11 && old_num_targets)
|
||||
si_flush_gfx_cs(sctx, 0, NULL);
|
||||
|
||||
/* Streamout buffers must be bound in 2 places:
|
||||
|
Reference in New Issue
Block a user