diff --git a/.pick_status.json b/.pick_status.json index 1e3f2b20d2c..4428e40a63a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2144,7 +2144,7 @@ "description": "radv: add missing conditional rendering for indirect dispatches on GFX6", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 9bd9b048b26..e00aa9254c0 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -9729,6 +9729,13 @@ radv_emit_dispatch_packets(struct radv_cmd_buffer *cmd_buffer, const struct radv radeon_emit(cs, info->va); radeon_emit(cs, info->va >> 32); + if (cmd_buffer->qf == RADV_QUEUE_COMPUTE) { + radv_cs_emit_compute_predication(cmd_buffer->device, &cmd_buffer->state, cs, + cmd_buffer->mec_inv_pred_va, &cmd_buffer->mec_inv_pred_emitted, + 3 /* PKT3_DISPATCH_INDIRECT */); + predicating = false; + } + radeon_emit(cs, PKT3(PKT3_DISPATCH_INDIRECT, 1, predicating) | PKT3_SHADER_TYPE_S(1)); radeon_emit(cs, 0); radeon_emit(cs, dispatch_initiator);