Specify original Vk*Flags in structured data instead of coerced FlagBits

* We coerce the type to the FlagBits enum for serialisation so the
  stringification picks up the bits properly. However the variable is properly
  typed as just 'Flags' which is a uint32_t typedef, so manually specify its
  typename afterwards.
This commit is contained in:
baldurk
2019-01-09 10:01:13 +00:00
parent d19a495ee0
commit 22f8b2ac79
7 changed files with 317 additions and 166 deletions
+1
View File
@@ -1096,6 +1096,7 @@ DECLARE_REFLECTION_ENUM(VkCommandPoolResetFlagBits);
DECLARE_REFLECTION_ENUM(VkCompareOp);
DECLARE_REFLECTION_ENUM(VkComponentSwizzle);
DECLARE_REFLECTION_ENUM(VkCompositeAlphaFlagBitsKHR);
DECLARE_REFLECTION_ENUM(VkConditionalRenderingFlagBitsEXT);
DECLARE_REFLECTION_ENUM(VkConservativeRasterizationModeEXT);
DECLARE_REFLECTION_ENUM(VkCullModeFlagBits);
DECLARE_REFLECTION_ENUM(VkDebugReportFlagBitsEXT);
File diff suppressed because it is too large Load Diff
+10
View File
@@ -740,6 +740,16 @@ std::string DoStringise(const VkDebugUtilsMessageSeverityFlagBitsEXT &el)
END_BITFIELD_STRINGISE();
}
template <>
std::string DoStringise(const VkConditionalRenderingFlagBitsEXT &el)
{
BEGIN_BITFIELD_STRINGISE(VkConditionalRenderingFlagBitsEXT);
{
STRINGISE_BITFIELD_BIT(VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT);
}
END_BITFIELD_STRINGISE();
}
template <>
std::string DoStringise(const VkDebugUtilsMessageTypeFlagBitsEXT &el)
{
@@ -2411,7 +2411,7 @@ bool WrappedVulkan::Serialise_vkCmdPushConstants(SerialiserType &ser, VkCommandB
{
SERIALISE_ELEMENT(commandBuffer);
SERIALISE_ELEMENT(layout);
SERIALISE_ELEMENT_TYPED(VkShaderStageFlagBits, stageFlags);
SERIALISE_ELEMENT_TYPED(VkShaderStageFlagBits, stageFlags).TypedAs("VkShaderStageFlags");
SERIALISE_ELEMENT(start);
SERIALISE_ELEMENT(length);
SERIALISE_ELEMENT_ARRAY(values, length);
@@ -2487,9 +2487,9 @@ bool WrappedVulkan::Serialise_vkCmdPipelineBarrier(
uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier *pImageMemoryBarriers)
{
SERIALISE_ELEMENT(commandBuffer);
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, srcStageMask);
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, destStageMask);
SERIALISE_ELEMENT_TYPED(VkDependencyFlagBits, dependencyFlags);
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, srcStageMask).TypedAs("VkPipelineStageFlags");
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, destStageMask).TypedAs("VkPipelineStageFlags");
SERIALISE_ELEMENT_TYPED(VkDependencyFlagBits, dependencyFlags).TypedAs("VkDependencyFlags");
SERIALISE_ELEMENT(memoryBarrierCount);
SERIALISE_ELEMENT_ARRAY(pMemoryBarriers, memoryBarrierCount);
SERIALISE_ELEMENT(bufferMemoryBarrierCount);
@@ -2710,7 +2710,7 @@ bool WrappedVulkan::Serialise_vkCmdCopyQueryPoolResults(
SERIALISE_ELEMENT(destBuffer);
SERIALISE_ELEMENT(destOffset);
SERIALISE_ELEMENT(destStride);
SERIALISE_ELEMENT_TYPED(VkQueryResultFlagBits, flags);
SERIALISE_ELEMENT_TYPED(VkQueryResultFlagBits, flags).TypedAs("VkQueryResultFlags");
Serialise_DebugMessages(ser);
@@ -2784,7 +2784,7 @@ bool WrappedVulkan::Serialise_vkCmdBeginQuery(SerialiserType &ser, VkCommandBuff
SERIALISE_ELEMENT(commandBuffer);
SERIALISE_ELEMENT(queryPool);
SERIALISE_ELEMENT(query);
SERIALISE_ELEMENT_TYPED(VkQueryControlFlagBits, flags);
SERIALISE_ELEMENT_TYPED(VkQueryControlFlagBits, flags).TypedAs("VkQueryControlFlags");
Serialise_DebugMessages(ser);
@@ -4659,7 +4659,7 @@ bool WrappedVulkan::Serialise_vkCmdBeginQueryIndexedEXT(SerialiserType &ser,
SERIALISE_ELEMENT(commandBuffer);
SERIALISE_ELEMENT(queryPool);
SERIALISE_ELEMENT(query);
SERIALISE_ELEMENT_TYPED(VkQueryControlFlagBits, flags);
SERIALISE_ELEMENT_TYPED(VkQueryControlFlagBits, flags).TypedAs("VkQueryControlFlags");
SERIALISE_ELEMENT(index);
Serialise_DebugMessages(ser);
@@ -410,7 +410,7 @@ bool WrappedVulkan::Serialise_vkCmdSetStencilCompareMask(SerialiserType &ser,
uint32_t compareMask)
{
SERIALISE_ELEMENT(commandBuffer);
SERIALISE_ELEMENT_TYPED(VkStencilFaceFlagBits, faceMask);
SERIALISE_ELEMENT_TYPED(VkStencilFaceFlagBits, faceMask).TypedAs("VkStencilFaceFlags");
SERIALISE_ELEMENT(compareMask);
Serialise_DebugMessages(ser);
@@ -476,7 +476,7 @@ bool WrappedVulkan::Serialise_vkCmdSetStencilWriteMask(SerialiserType &ser,
uint32_t writeMask)
{
SERIALISE_ELEMENT(commandBuffer);
SERIALISE_ELEMENT_TYPED(VkStencilFaceFlagBits, faceMask);
SERIALISE_ELEMENT_TYPED(VkStencilFaceFlagBits, faceMask).TypedAs("VkStencilFaceFlags");
SERIALISE_ELEMENT(writeMask);
Serialise_DebugMessages(ser);
@@ -542,7 +542,7 @@ bool WrappedVulkan::Serialise_vkCmdSetStencilReference(SerialiserType &ser,
uint32_t reference)
{
SERIALISE_ELEMENT(commandBuffer);
SERIALISE_ELEMENT_TYPED(VkStencilFaceFlagBits, faceMask);
SERIALISE_ELEMENT_TYPED(VkStencilFaceFlagBits, faceMask).TypedAs("VkStencilFaceFlags");
SERIALISE_ELEMENT(reference);
Serialise_DebugMessages(ser);
@@ -615,7 +615,7 @@ bool WrappedVulkan::Serialise_vkCmdSetEvent(SerialiserType &ser, VkCommandBuffer
{
SERIALISE_ELEMENT(commandBuffer);
SERIALISE_ELEMENT(event);
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, stageMask);
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, stageMask).TypedAs("VkPipelineStageFlags");
Serialise_DebugMessages(ser);
@@ -670,7 +670,7 @@ bool WrappedVulkan::Serialise_vkCmdResetEvent(SerialiserType &ser, VkCommandBuff
{
SERIALISE_ELEMENT(commandBuffer);
SERIALISE_ELEMENT(event);
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, stageMask);
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, stageMask).TypedAs("VkPipelineStageFlags");
Serialise_DebugMessages(ser);
@@ -735,8 +735,8 @@ bool WrappedVulkan::Serialise_vkCmdWaitEvents(
SERIALISE_ELEMENT(eventCount);
SERIALISE_ELEMENT_ARRAY(pEvents, eventCount);
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, srcStageMask);
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, dstStageMask);
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, srcStageMask).TypedAs("VkPipelineStageFlags");
SERIALISE_ELEMENT_TYPED(VkPipelineStageFlagBits, dstStageMask).TypedAs("VkPipelineStageFlags");
SERIALISE_ELEMENT(memoryBarrierCount);
SERIALISE_ELEMENT_ARRAY(pMemoryBarriers, memoryBarrierCount);
+7 -1
View File
@@ -1323,7 +1323,13 @@ public:
SDObject &current = *m_StructureStack.back();
if(!current.data.children.empty())
current.data.children.back()->type.name = name;
{
SDObject *last = current.data.children.back();
last->type.name = name;
for(SDObject *obj : last->data.children)
obj->type.name = name;
}
}
return *this;