Stringise flags properly in serialisation

This commit is contained in:
baldurk
2024-12-12 16:02:04 +00:00
parent d0e415ea93
commit 348ca307dd
3 changed files with 44 additions and 47 deletions
@@ -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 <typename SerialiserType>
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 <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkAccelerationStructureInfo::GeometryData::Aabbs &el)
{
SERIALISE_MEMBER(stride);
}
INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureInfo::GeometryData::Aabbs);
template <typename SerialiserType>
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 <typename SerialiserType>
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();
@@ -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:
+39
View File
@@ -12449,6 +12449,45 @@ void DoSerialise(SerialiserType &ser, VkStridedDeviceAddressRegionKHR &el)
SERIALISE_MEMBER(size);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkAccelerationStructureInfo::GeometryData::Triangles &el)
{
SERIALISE_MEMBER(vertexFormat);
SERIALISE_MEMBER(vertexStride);
SERIALISE_MEMBER(maxVertex);
SERIALISE_MEMBER(indexType);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkAccelerationStructureInfo::GeometryData::Aabbs &el)
{
SERIALISE_MEMBER(stride);
}
template <typename SerialiserType>
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 <typename SerialiserType>
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);