From c14eb415a26cac492b80457281094d69dda2c7a9 Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Sat, 29 Nov 2025 16:43:31 +0100 Subject: [PATCH] radv/bvh: Avoid a slow case when compressing triangles Reviewed-by: Natalie Vock Part-of: --- src/amd/vulkan/bvh/encode_triangles_gfx12.comp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/bvh/encode_triangles_gfx12.comp b/src/amd/vulkan/bvh/encode_triangles_gfx12.comp index f751427c732..6dee0c281bd 100644 --- a/src/amd/vulkan/bvh/encode_triangles_gfx12.comp +++ b/src/amd/vulkan/bvh/encode_triangles_gfx12.comp @@ -225,7 +225,10 @@ main() uint32_t geometry_id_payload_bit_size; uint32_t trailing_zero_bits; uvec3 vertex_payload_bit_size; - for (uint32_t i = 0; i <= first_assigned_invocation; i++) { + bool has_assigned = first_assigned_invocation != 0xffffffff; + uint32_t size_loop_start = has_assigned ? 0 : cluster.invocation_index; + uint32_t size_loop_end = has_assigned ? first_assigned_invocation : cluster.invocation_index; + for (uint32_t i = size_loop_start; i <= size_loop_end; i++) { uvec3 vertex_prefix = radv_read_invocation(cluster, i, floatBitsToUint(vertices[0])); uvec3 vertex_payload_mask = uvec3(0); uint32_t vertex_non_zero_mask = 0;