diff --git a/src/amd/vulkan/nir/radv_nir_rt_common.c b/src/amd/vulkan/nir/radv_nir_rt_common.c index 60683550d98..2b80d2574c3 100644 --- a/src/amd/vulkan/nir/radv_nir_rt_common.c +++ b/src/amd/vulkan/nir/radv_nir_rt_common.c @@ -560,12 +560,11 @@ radv_build_ray_traversal(struct radv_device *device, nir_builder *b, const struc nir_load_deref(b, args->vars.dir), nir_load_deref(b, args->vars.inv_dir)); } - nir_def *node_type = nir_iand_imm(b, bvh_node, 7); - nir_push_if(b, nir_uge_imm(b, node_type, radv_bvh_node_box16)); + nir_push_if(b, nir_test_mask(b, bvh_node, BITFIELD64_BIT(ffs(radv_bvh_node_box16) - 1))); { - nir_push_if(b, nir_uge_imm(b, node_type, radv_bvh_node_instance)); + nir_push_if(b, nir_test_mask(b, bvh_node, BITFIELD64_BIT(ffs(radv_bvh_node_instance) - 1))); { - nir_push_if(b, nir_ieq_imm(b, node_type, radv_bvh_node_aabb)); + nir_push_if(b, nir_test_mask(b, bvh_node, BITFIELD64_BIT(ffs(radv_bvh_node_aabb) - 1))); { insert_traversal_aabb_case(device, b, args, &ray_flags, global_bvh_node); }