Module: Mesa
Branch: staging/23.0
Commit: 940212130f897ebb1dfe66b51bc200e841b9ab12
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=940212130f897ebb1dfe66b51bc200e841b9ab12

Author: Lionel Landwerlin <[email protected]>
Date:   Thu Jan  5 19:38:22 2023 +0200

anv: make sure mi_memcpy lands before push constant loads

Signed-off-by: Lionel Landwerlin <[email protected]>
Fixes: e2dc32d755 ("anv: move functions around to plan for generated draws")
Reviewed-by: Tapani Pälli <[email protected]>
Reviewed-by: Ivan Briano <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20497>
(cherry picked from commit aa18d52728cf1a7e3adebc67615a31aad357f16c)

---

 .pick_status.json                                   | 2 +-
 src/intel/vulkan/genX_cmd_draw_generated_indirect.h | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/.pick_status.json b/.pick_status.json
index b1d022362b0..7e83611f525 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -4774,7 +4774,7 @@
         "description": "anv: make sure mi_memcpy lands before push constant 
loads",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "e2dc32d755b15697765719acec1d23f12f9c938c"
     },
diff --git a/src/intel/vulkan/genX_cmd_draw_generated_indirect.h 
b/src/intel/vulkan/genX_cmd_draw_generated_indirect.h
index 696f43ff115..a1ce0687fac 100644
--- a/src/intel/vulkan/genX_cmd_draw_generated_indirect.h
+++ b/src/intel/vulkan/genX_cmd_draw_generated_indirect.h
@@ -581,6 +581,12 @@ genX(cmd_buffer_emit_generate_draws_count)(struct 
anv_cmd_buffer *cmd_buffer,
                 },
                 offsetof(struct anv_generate_indirect_params, 
draw_count.draw_count)),
              count_addr, 4);
+   /* Make sure the memcpy landed for the generating draw call to pick up the
+    * value.
+    */
+   anv_batch_emit(batch, GENX(PIPE_CONTROL), pc) {
+      pc.CommandStreamerStallEnable = true;
+   }
 
    /* Only emit the data after the memcpy above. */
    genX(cmd_buffer_emit_generated_push_data)(cmd_buffer, push_data_state);

Reply via email to