diff --git a/renderdoc/driver/vulkan/vk_acceleration_structure.cpp b/renderdoc/driver/vulkan/vk_acceleration_structure.cpp index 08b06adac..aad322980 100644 --- a/renderdoc/driver/vulkan/vk_acceleration_structure.cpp +++ b/renderdoc/driver/vulkan/vk_acceleration_structure.cpp @@ -58,53 +58,6 @@ VkDeviceSize IndexTypeSize(VkIndexType type) } } -DECLARE_STRINGISE_TYPE(VkAccelerationStructureInfo::GeometryData::Triangles); -DECLARE_STRINGISE_TYPE(VkAccelerationStructureInfo::GeometryData::Aabbs); -DECLARE_STRINGISE_TYPE(VkAccelerationStructureInfo::GeometryData); -DECLARE_STRINGISE_TYPE(VkAccelerationStructureInfo); - -template -void DoSerialise(SerialiserType &ser, VkAccelerationStructureInfo::GeometryData::Triangles &el) -{ - SERIALISE_MEMBER(vertexFormat); - SERIALISE_MEMBER(vertexStride); - SERIALISE_MEMBER(maxVertex); - SERIALISE_MEMBER(indexType); -} -INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureInfo::GeometryData::Triangles); - -template -void DoSerialise(SerialiserType &ser, VkAccelerationStructureInfo::GeometryData::Aabbs &el) -{ - SERIALISE_MEMBER(stride); -} -INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureInfo::GeometryData::Aabbs); - -template -void DoSerialise(SerialiserType &ser, VkAccelerationStructureInfo::GeometryData &el) -{ - SERIALISE_MEMBER(geometryType); - SERIALISE_MEMBER_TYPED(VkGeometryFlagBitsKHR, flags).TypedAs("VkGeometryFlagsKHR"_lit); - - SERIALISE_MEMBER(tris); - SERIALISE_MEMBER(aabbs); - - SERIALISE_MEMBER(buildRangeInfo); - SERIALISE_MEMBER(memOffset); -} -INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureInfo::GeometryData); - -template -void DoSerialise(SerialiserType &ser, VkAccelerationStructureInfo &el) -{ - SERIALISE_MEMBER(type); - SERIALISE_MEMBER_TYPED(VkBuildAccelerationStructureFlagBitsKHR, flags) - .TypedAs("VkBuildAccelerationStructureFlagsKHR"_lit); - SERIALISE_MEMBER(geometryData); - SERIALISE_MEMBER(memSize); -} -INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureInfo); - VkAccelerationStructureInfo::~VkAccelerationStructureInfo() { readbackMem.Destroy(); diff --git a/renderdoc/driver/vulkan/vk_acceleration_structure.h b/renderdoc/driver/vulkan/vk_acceleration_structure.h index 726aac68d..0d2292be5 100644 --- a/renderdoc/driver/vulkan/vk_acceleration_structure.h +++ b/renderdoc/driver/vulkan/vk_acceleration_structure.h @@ -85,6 +85,11 @@ private: int32_t refCount = 1; }; +DECLARE_REFLECTION_STRUCT(VkAccelerationStructureInfo::GeometryData::Triangles); +DECLARE_REFLECTION_STRUCT(VkAccelerationStructureInfo::GeometryData::Aabbs); +DECLARE_REFLECTION_STRUCT(VkAccelerationStructureInfo::GeometryData); +DECLARE_REFLECTION_STRUCT(VkAccelerationStructureInfo); + class VulkanAccelerationStructureManager { public: diff --git a/renderdoc/driver/vulkan/vk_serialise.cpp b/renderdoc/driver/vulkan/vk_serialise.cpp index 848a7c596..d76fc12f5 100644 --- a/renderdoc/driver/vulkan/vk_serialise.cpp +++ b/renderdoc/driver/vulkan/vk_serialise.cpp @@ -12449,6 +12449,45 @@ void DoSerialise(SerialiserType &ser, VkStridedDeviceAddressRegionKHR &el) SERIALISE_MEMBER(size); } +template +void DoSerialise(SerialiserType &ser, VkAccelerationStructureInfo::GeometryData::Triangles &el) +{ + SERIALISE_MEMBER(vertexFormat); + SERIALISE_MEMBER(vertexStride); + SERIALISE_MEMBER(maxVertex); + SERIALISE_MEMBER(indexType); +} + +template +void DoSerialise(SerialiserType &ser, VkAccelerationStructureInfo::GeometryData::Aabbs &el) +{ + SERIALISE_MEMBER(stride); +} + +template +void DoSerialise(SerialiserType &ser, VkAccelerationStructureInfo::GeometryData &el) +{ + SERIALISE_MEMBER(geometryType); + SERIALISE_MEMBER_VKFLAGS(VkGeometryFlagsKHR, flags); + + SERIALISE_MEMBER(tris); + SERIALISE_MEMBER(aabbs); + + SERIALISE_MEMBER(buildRangeInfo); + SERIALISE_MEMBER(memOffset); +} + +template +void DoSerialise(SerialiserType &ser, VkAccelerationStructureInfo &el) +{ + SERIALISE_MEMBER(type); + SERIALISE_MEMBER_VKFLAGS(VkBuildAccelerationStructureFlagsKHR, flags); + SERIALISE_MEMBER(geometryData); + SERIALISE_MEMBER(memSize); +} + +INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureInfo); + // pNext structs - always have deserialise for the next chain INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureBuildGeometryInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureBuildSizesInfoKHR);