From 536c44d9460063588b4b654bb1f835e88953c87b Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 27 Feb 2024 11:35:10 +0100 Subject: [PATCH] radv: fix conditional rendering with direct mesh+task draws and multiview Having to compute the predication size manually is VERY prone to errors. Cc: mesa-stable Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index b9bd4f5cd42..58e168b3d9d 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -8678,6 +8678,9 @@ radv_emit_direct_taskmesh_draw_packets(struct radv_cmd_buffer *cmd_buffer, uint3 const unsigned num_views = MAX2(1, util_bitcount(view_mask)); unsigned ace_predication_size = num_views * 6; /* DISPATCH_TASKMESH_DIRECT_ACE size */ + if (num_views > 1) + ace_predication_size += num_views * 3; /* SET_SH_REG size (view index SGPR) */ + radv_emit_userdata_task(cmd_buffer, x, y, z, 0); radv_cs_emit_compute_predication(&cmd_buffer->state, cmd_buffer->gang.cs, cmd_buffer->mec_inv_pred_va, &cmd_buffer->mec_inv_pred_emitted, ace_predication_size);