From 3e7850f97bc07f8bdf374c6e330055b186c515e3 Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Sat, 16 Sep 2023 16:35:00 +0200 Subject: [PATCH] radv/bvh: Treat instances with mask == 0 as inactive Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/bvh/leaf.comp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/bvh/leaf.comp b/src/amd/vulkan/bvh/leaf.comp index be05c8f..f79ccfa 100644 --- a/src/amd/vulkan/bvh/leaf.comp +++ b/src/amd/vulkan/bvh/leaf.comp @@ -268,8 +268,10 @@ build_instance(inout radv_aabb bounds, VOID_REF src_ptr, VOID_REF dst_ptr, uint3 AccelerationStructureInstance instance = DEREF(REF(AccelerationStructureInstance)(src_ptr)); DEREF(node).base_ptr = instance.accelerationStructureReference; - /* An inactive instance is one whose acceleration structure handle is VK_NULL_HANDLE. */ - if (instance.accelerationStructureReference == 0) + /* An inactive instance is one whose acceleration structure handle is VK_NULL_HANDLE. Since the active terminology is + * only relevant for BVH updates, which we do not implement, we can also skip instances with mask == 0. + */ + if (instance.accelerationStructureReference == 0 || instance.custom_instance_and_mask < (1u << 24u)) return false; DEREF(node).otw_matrix = instance.transform; -- 2.7.4