diff --git a/src/amd/vulkan/bvh/encode.comp b/src/amd/vulkan/bvh/encode.comp index 6c0cb53aa4e..314a7a99b08 100644 --- a/src/amd/vulkan/bvh/encode.comp +++ b/src/amd/vulkan/bvh/encode.comp @@ -238,7 +238,10 @@ main() gl_SemanticsAcquireRelease | gl_SemanticsMakeAvailable | gl_SemanticsMakeVisible); DEREF(dst_node).children = children; - DEREF(dst_node).flags = flags; + + if (VK_BUILD_FLAG(VK_BUILD_FLAG_PROPAGATE_CULL_FLAGS)) + DEREF(dst_node).flags = flags; + break; } diff --git a/src/amd/vulkan/bvh/encode.h b/src/amd/vulkan/bvh/encode.h index f72a1e63e3b..39f03ae31bd 100644 --- a/src/amd/vulkan/bvh/encode.h +++ b/src/amd/vulkan/bvh/encode.h @@ -17,12 +17,16 @@ radv_encode_triangle_gfx10_3(VOID_REF dst_addr, vk_ir_triangle_node src) { REF(radv_bvh_triangle_node) dst = REF(radv_bvh_triangle_node)(dst_addr); - bool opaque = (src.geometry_id_and_flags & VK_GEOMETRY_OPAQUE) != 0; + uint32_t barycentrics_control = 9; + if (VK_BUILD_FLAG(VK_BUILD_FLAG_PROPAGATE_CULL_FLAGS)) { + bool opaque = (src.geometry_id_and_flags & VK_GEOMETRY_OPAQUE) != 0; + barycentrics_control |= (opaque ? 128 : 0); + } DEREF(dst).coords = src.coords; DEREF(dst).triangle_id = src.triangle_id; DEREF(dst).geometry_id_and_flags = src.geometry_id_and_flags; - DEREF(dst).id = 9 | (opaque ? 128 : 0); + DEREF(dst).id = barycentrics_control; } void