From 59ecbe3fe2e2dbf028a479689ae74082f940dc87 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Wed, 21 Sep 2022 12:49:07 -0700 Subject: [PATCH] turnip: Fix reservation for indirect compute's IR3_DP_SUBGROUP_ID_SHIFT. Fixes an assert in GravityMark. Part-of: --- src/freedreno/vulkan/tu_cmd_buffer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index f7c89a2..db18d28 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -5165,7 +5165,8 @@ tu_emit_compute_driver_params(struct tu_cmd_buffer *cmd, * indirect dispatch. */ if (info->indirect && num_consts > IR3_DP_BASE_GROUP_X) { - tu_cs_emit_pkt7(cs, tu6_stage2opcode(type), 7); + bool emit_local = num_consts > IR3_DP_LOCAL_GROUP_SIZE_X; + tu_cs_emit_pkt7(cs, tu6_stage2opcode(type), 7 + (emit_local ? 4 : 0)); tu_cs_emit(cs, CP_LOAD_STATE6_0_DST_OFF(offset + (IR3_DP_BASE_GROUP_X / 4)) | CP_LOAD_STATE6_0_STATE_TYPE(ST6_CONSTANTS) | CP_LOAD_STATE6_0_STATE_SRC(SS6_DIRECT) | @@ -5176,7 +5177,7 @@ tu_emit_compute_driver_params(struct tu_cmd_buffer *cmd, tu_cs_emit(cs, 0); /* BASE_GROUP_Y */ tu_cs_emit(cs, 0); /* BASE_GROUP_Z */ tu_cs_emit(cs, subgroup_size); - if (num_consts > IR3_DP_LOCAL_GROUP_SIZE_X) { + if (emit_local) { assert(num_consts == align(IR3_DP_SUBGROUP_ID_SHIFT, 4)); tu_cs_emit(cs, 0); /* LOCAL_GROUP_SIZE_X */ tu_cs_emit(cs, 0); /* LOCAL_GROUP_SIZE_Y */ -- 2.7.4