From 33166ba50b8e3d5cb0c9bd98d0860111bea52484 Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Thu, 5 Jan 2023 17:40:37 +0100 Subject: [PATCH] radv: Use the null accel struct instead of emitting 0 Reviewed-by: Friedrich Vock Part-of: --- src/amd/vulkan/radv_descriptor_set.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c index 2a0b344..dae3aee 100644 --- a/src/amd/vulkan/radv_descriptor_set.c +++ b/src/amd/vulkan/radv_descriptor_set.c @@ -1245,8 +1245,14 @@ write_sampler_descriptor(unsigned *dst, VkSampler _sampler) } static ALWAYS_INLINE void -write_accel_struct(void *ptr, VkDeviceAddress va) +write_accel_struct(struct radv_device *device, void *ptr, VkDeviceAddress va) { + if (!va) { + RADV_FROM_HANDLE(radv_acceleration_structure, accel_struct, + device->meta_state.accel_struct_build.null.accel_struct); + va = accel_struct->va; + } + memcpy(ptr, &va, sizeof(va)); } @@ -1344,7 +1350,8 @@ radv_update_descriptor_sets_impl(struct radv_device *device, struct radv_cmd_buf case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR: { RADV_FROM_HANDLE(radv_acceleration_structure, accel_struct, accel_structs->pAccelerationStructures[j]); - write_accel_struct(ptr, accel_struct ? accel_struct->va : 0); + + write_accel_struct(device, ptr, accel_struct ? accel_struct->va : 0); break; } default: @@ -1640,7 +1647,7 @@ radv_update_descriptor_set_with_template_impl(struct radv_device *device, case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR: { RADV_FROM_HANDLE(radv_acceleration_structure, accel_struct, *(const VkAccelerationStructureKHR *)pSrc); - write_accel_struct(pDst, accel_struct ? accel_struct->va : 0); + write_accel_struct(device, pDst, accel_struct ? accel_struct->va : 0); break; } default: @@ -1826,7 +1833,7 @@ radv_GetDescriptorEXT(VkDevice _device, const VkDescriptorGetInfoEXT *pDescripto break; } case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR: - write_accel_struct(pDescriptor, pDescriptorInfo->data.accelerationStructure); + write_accel_struct(device, pDescriptor, pDescriptorInfo->data.accelerationStructure); break; } default: -- 2.7.4