anv: pull Wa_14016118574 out of some loop not changing state

The WA is meant to be here to apply some state that is not propagated
properly inside the HW. But if you have a loop like :

for ( ... ) {
  emit(3DPRIMITIVE, some param);
}

You're not really changing any state, just push more draws into the
pipeline.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: f2645229c2 ("anv: implement Wa_14016118574")
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21660>
This commit is contained in:
Lionel Landwerlin
2023-03-02 18:44:45 +02:00
committed by Marge Bot
parent d82e8e01c8
commit 6ee7a2ecfa
+13 -7
View File
@@ -4226,12 +4226,15 @@ void genX(CmdDrawMultiEXT)(
prim.ExtendedParameter1 = firstInstance;
prim.ExtendedParameter2 = i;
}
#if GFX_VERx10 == 125
genX(emit_dummy_post_sync_op)(cmd_buffer, draw->vertexCount);
#endif
}
#endif
#if GFX_VERx10 == 125
genX(emit_dummy_post_sync_op)(cmd_buffer,
drawCount == 0 ? 0 :
pVertexInfo[drawCount - 1].vertexCount);
#endif
update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, SEQUENTIAL);
trace_intel_end_draw_multi(&cmd_buffer->trace, count);
@@ -4434,12 +4437,15 @@ void genX(CmdDrawMultiIndexedEXT)(
prim.ExtendedParameter1 = firstInstance;
prim.ExtendedParameter2 = i;
}
#if GFX_VERx10 == 125
genX(emit_dummy_post_sync_op)(cmd_buffer, draw->indexCount);
#endif
}
#endif
#if GFX_VERx10 == 125
genX(emit_dummy_post_sync_op)(cmd_buffer,
drawCount == 0 ? 0 :
pIndexInfo[drawCount - 1].indexCount);
#endif
update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, RANDOM);
trace_intel_end_draw_indexed_multi(&cmd_buffer->trace, count);
@@ -4686,7 +4692,7 @@ emit_indirect_draws(struct anv_cmd_buffer *cmd_buffer,
}
#if GFX_VERx10 == 125
genX(emit_dummy_post_sync_op)(cmd_buffer, 1);
genX(emit_dummy_post_sync_op)(cmd_buffer, 1);
#endif
update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, SEQUENTIAL);