diff --git a/.pick_status.json b/.pick_status.json index 433c8311579..038f31da5ca 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -5638,7 +5638,7 @@ "description": "tu: Treat CP_WAIT_FOR_ME as a cache invalidate", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "37939e9c5462b871b0b9b00a43c5c9bec1e10e9d" }, diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h index 28a9c5ea1c8..862d507c9dc 100644 --- a/src/freedreno/vulkan/tu_private.h +++ b/src/freedreno/vulkan/tu_private.h @@ -1068,7 +1068,14 @@ enum tu_cmd_flush_bits { TU_CMD_FLAG_ALL_INVALIDATE = TU_CMD_FLAG_CCU_INVALIDATE_DEPTH | TU_CMD_FLAG_CCU_INVALIDATE_COLOR | - TU_CMD_FLAG_CACHE_INVALIDATE, + TU_CMD_FLAG_CACHE_INVALIDATE | + /* Treat CP_WAIT_FOR_ME as a "cache" that needs to be invalidated when a + * a command that needs CP_WAIT_FOR_ME is executed. This means we may + * insert an extra WAIT_FOR_ME before an indirect command requiring it + * in case there was another command before the current command buffer + * that it needs to wait for. + */ + TU_CMD_FLAG_WAIT_FOR_ME, }; /* Changing the CCU from sysmem mode to gmem mode or vice-versa is pretty