Update vulkan chunk enum to enum class, use ToStr for stringify-ing

This commit is contained in:
baldurk
2017-09-28 16:13:16 +01:00
parent c7ede6725a
commit 5a1a3fb6cf
4 changed files with 219 additions and 280 deletions
+102 -132
View File
@@ -275,141 +275,111 @@ DECLARE_REFLECTION_STRUCT(DescriptorSetSlot);
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | VK_ACCESS_TRANSFER_WRITE_BIT | \
VK_ACCESS_HOST_WRITE_BIT | VK_ACCESS_MEMORY_WRITE_BIT)
#pragma region Chunks
enum VulkanChunkType
enum class VulkanChunk : uint32_t
{
DEVICE_INIT = FIRST_CHUNK_ID,
CREATE_INSTANCE,
ENUM_PHYSICALS,
CREATE_DEVICE,
GET_DEVICE_QUEUE,
ALLOC_MEM,
UNMAP_MEM,
FLUSH_MEM,
FREE_MEM,
CREATE_CMD_POOL,
RESET_CMD_POOL,
CREATE_CMD_BUFFER,
CREATE_FRAMEBUFFER,
CREATE_RENDERPASS,
CREATE_DESCRIPTOR_POOL,
CREATE_DESCRIPTOR_SET_LAYOUT,
CREATE_BUFFER,
CREATE_BUFFER_VIEW,
CREATE_IMAGE,
CREATE_IMAGE_VIEW,
CREATE_DEPTH_TARGET_VIEW,
CREATE_SAMPLER,
CREATE_SHADER_MODULE,
CREATE_PIPE_LAYOUT,
CREATE_PIPE_CACHE,
CREATE_GRAPHICS_PIPE,
CREATE_COMPUTE_PIPE,
GET_SWAPCHAIN_IMAGE,
CREATE_SEMAPHORE,
CREATE_FENCE,
GET_FENCE_STATUS,
RESET_FENCE,
WAIT_FENCES,
CREATE_EVENT,
GET_EVENT_STATUS,
SET_EVENT,
RESET_EVENT,
CREATE_QUERY_POOL,
ALLOC_DESC_SET,
UPDATE_DESC_SET,
BEGIN_CMD_BUFFER,
END_CMD_BUFFER,
QUEUE_WAIT_IDLE,
DEVICE_WAIT_IDLE,
QUEUE_SUBMIT,
BIND_BUFFER_MEM,
BIND_IMAGE_MEM,
BIND_SPARSE,
BEGIN_RENDERPASS,
NEXT_SUBPASS,
EXEC_CMDS,
END_RENDERPASS,
BIND_PIPELINE,
SET_VP,
SET_SCISSOR,
SET_LINE_WIDTH,
SET_DEPTH_BIAS,
SET_BLEND_CONST,
SET_DEPTH_BOUNDS,
SET_STENCIL_COMP_MASK,
SET_STENCIL_WRITE_MASK,
SET_STENCIL_REF,
BIND_DESCRIPTOR_SET,
BIND_VERTEX_BUFFERS,
BIND_INDEX_BUFFER,
COPY_BUF2IMG,
COPY_IMG2BUF,
COPY_BUF,
COPY_IMG,
BLIT_IMG,
RESOLVE_IMG,
UPDATE_BUF,
FILL_BUF,
PUSH_CONST,
CLEAR_COLOR,
CLEAR_DEPTHSTENCIL,
CLEAR_ATTACH,
PIPELINE_BARRIER,
WRITE_TIMESTAMP,
COPY_QUERY_RESULTS,
BEGIN_QUERY,
END_QUERY,
RESET_QUERY_POOL,
CMD_SET_EVENT,
CMD_RESET_EVENT,
CMD_WAIT_EVENTS,
DRAW,
DRAW_INDIRECT,
DRAW_INDEXED,
DRAW_INDEXED_INDIRECT,
DISPATCH,
DISPATCH_INDIRECT,
BEGIN_EVENT,
SET_MARKER,
END_EVENT,
SET_NAME,
SET_SHADER_DEBUG_PATH,
CREATE_SWAP_BUFFER,
DEBUG_MESSAGES,
CAPTURE_SCOPE,
CONTEXT_CAPTURE_HEADER,
CONTEXT_CAPTURE_FOOTER,
NUM_VULKAN_CHUNKS,
vkEnumeratePhysicalDevices = (uint32_t)SystemChunk::FirstDriverChunk,
vkCreateDevice,
vkGetDeviceQueue,
vkAllocateMemory,
vkUnmapMemory,
vkFlushMappedMemoryRanges,
vkCreateCommandPool,
vkResetCommandPool,
vkCreateFramebuffer,
vkCreateRenderPass,
vkCreateDescriptorPool,
vkCreateDescriptorSetLayout,
vkCreateBuffer,
vkCreateBufferView,
vkCreateImage,
vkCreateImageView,
vkCreateDepthTargetView,
vkCreateSampler,
vkCreateShaderModule,
vkCreatePipelineLayout,
vkCreatePipelineCache,
vkCreateGraphicsPipelines,
vkCreateComputePipelines,
vkGetSwapchainImagesKHR,
vkCreateSemaphore,
vkCreateFence,
vkGetFenceStatus,
vkResetFences,
vkWaitForFences,
vkCreateEvent,
vkGetEventStatus,
vkSetEvent,
vkResetEvent,
vkCreateQueryPool,
vkAllocateDescriptorSets,
vkUpdateDescriptorSets,
vkBeginCommandBuffer,
vkEndCommandBuffer,
vkQueueWaitIdle,
vkDeviceWaitIdle,
vkQueueSubmit,
vkBindBufferMemory,
vkBindImageMemory,
vkQueueBindSparse,
vkCmdBeginRenderPass,
vkCmdNextSubpass,
vkCmdExecuteCommands,
vkCmdEndRenderPass,
vkCmdBindPipeline,
vkCmdSetViewport,
vkCmdSetScissor,
vkCmdSetLineWidth,
vkCmdSetDepthBias,
vkCmdSetBlendConstants,
vkCmdSetDepthBounds,
vkCmdSetStencilCompareMask,
vkCmdSetStencilWriteMask,
vkCmdSetStencilReference,
vkCmdBindDescriptorSets,
vkCmdBindVertexBuffers,
vkCmdBindIndexBuffer,
vkCmdCopyBufferToImage,
vkCmdCopyImageToBuffer,
vkCmdCopyBuffer,
vkCmdCopyImage,
vkCmdBlitImage,
vkCmdResolveImage,
vkCmdUpdateBuffer,
vkCmdFillBuffer,
vkCmdPushConstants,
vkCmdClearColorImage,
vkCmdClearDepthStencilImage,
vkCmdClearAttachments,
vkCmdPipelineBarrier,
vkCmdWriteTimestamp,
vkCmdCopyQueryPoolResults,
vkCmdBeginQuery,
vkCmdEndQuery,
vkCmdResetQueryPool,
vkCmdSetEvent,
vkCmdResetEvent,
vkCmdWaitEvents,
vkCmdDraw,
vkCmdDrawIndirect,
vkCmdDrawIndexed,
vkCmdDrawIndexedIndirect,
vkCmdDispatch,
vkCmdDispatchIndirect,
vkCmdDebugMarkerBeginEXT,
vkCmdDebugMarkerInsertEXT,
vkCmdDebugMarkerEndEXT,
vkDebugMarkerSetObjectNameEXT,
vkCreateSwapchainKHR,
SetShaderDebugPath,
vkRegisterDeviceEventEXT,
vkRegisterDisplayEventEXT,
CaptureScope,
CaptureBegin,
CaptureEnd,
Max,
};
#pragma endregion Chunks
DECLARE_REFLECTION_ENUM(VulkanChunk);
// this is special - these serialise overloads will fetch the ID during capture, serialise the ID
// directly as-if it were the original type, then on replay load up the resource if available.
+5 -147
View File
@@ -28,135 +28,6 @@
#include "strings/string_utils.h"
#include "vk_debug.h"
const char *VkChunkNames[] = {
"WrappedVulkan::Initialisation",
"vkCreateInstance",
"vkEnumeratePhysicalDevices",
"vkCreateDevice",
"vkGetDeviceQueue",
"vkAllocMemory",
"vkUnmapMemory",
"vkFlushMappedMemoryRanges",
"vkFreeMemory",
"vkCreateCommandPool",
"vkResetCommandPool",
"vkCreateCommandBuffer",
"vkCreateFramebuffer",
"vkCreateRenderPass",
"vkCreateDescriptorPool",
"vkCreateDescriptorSetLayout",
"vkCreateBuffer",
"vkCreateBufferView",
"vkCreateImage",
"vkCreateImageView",
"vkCreateDepthTargetView",
"vkCreateSampler",
"vkCreateShaderModule",
"vkCreatePipelineLayout",
"vkCreatePipelineCache",
"vkCreateGraphicsPipelines",
"vkCreateComputePipelines",
"vkGetSwapchainImagesKHR",
"vkCreateSemaphore",
"vkCreateFence",
"vkGetFenceStatus",
"vkResetFences",
"vkWaitForFences",
"vkCreateEvent",
"vkGetEventStatus",
"vkSetEvent",
"vkResetEvent",
"vkCreateQueryPool",
"vkAllocDescriptorSets",
"vkUpdateDescriptorSets",
"vkBeginCommandBuffer",
"vkEndCommandBuffer",
"vkQueueWaitIdle",
"vkDeviceWaitIdle",
"vkQueueSubmit",
"vkBindBufferMemory",
"vkBindImageMemory",
"vkQueueBindSparse",
"vkCmdBeginRenderPass",
"vkCmdNextSubpass",
"vkCmdExecuteCommands",
"vkCmdEndRenderPass",
"vkCmdBindPipeline",
"vkCmdSetViewport",
"vkCmdSetScissor",
"vkCmdSetLineWidth",
"vkCmdSetDepthBias",
"vkCmdSetBlendConstants",
"vkCmdSetDepthBounds",
"vkCmdSetStencilCompareMask",
"vkCmdSetStencilWriteMask",
"vkCmdSetStencilReference",
"vkCmdBindDescriptorSet",
"vkCmdBindVertexBuffers",
"vkCmdBindIndexBuffer",
"vkCmdCopyBufferToImage",
"vkCmdCopyImageToBuffer",
"vkCmdCopyBuffer",
"vkCmdCopyImage",
"vkCmdBlitImage",
"vkCmdResolveImage",
"vkCmdUpdateBuffer",
"vkCmdFillBuffer",
"vkCmdPushConstants",
"vkCmdClearColorImage",
"vkCmdClearDepthStencilImage",
"vkCmdClearAttachments",
"vkCmdPipelineBarrier",
"vkCmdWriteTimestamp",
"vkCmdCopyQueryPoolResults",
"vkCmdBeginQuery",
"vkCmdEndQuery",
"vkCmdResetQueryPool",
"vkCmdSetEvent",
"vkCmdResetEvent",
"vkCmdWaitEvents",
"vkCmdDraw",
"vkCmdDrawIndirect",
"vkCmdDrawIndexed",
"vkCmdDrawIndexedIndirect",
"vkCmdDispatch",
"vkCmdDispatchIndirect",
"vkCmdDebugMarkerBeginEXT",
"vkCmdDebugMarkerInsertEXT",
"vkCmdDebugMarkerEndEXT",
"vkDebugMarkerSetObjectNameEXT",
"vkDebugMarkerSetObjectTagEXT",
"vkCreateSwapchainKHR",
"Debug Messages",
"Capture",
"BeginCapture",
"EndCapture",
};
VkInitParams::VkInitParams()
{
SerialiseVersion = VK_SERIALISE_VERSION;
@@ -568,25 +439,12 @@ uint32_t WrappedVulkan::HandlePreCallback(VkCommandBuffer commandBuffer, DrawFla
return eventID;
}
const char *WrappedVulkan::GetChunkName(uint32_t idx)
std::string WrappedVulkan::GetChunkName(uint32_t idx)
{
if(idx == CREATE_PARAMS)
return "Create Params";
if(idx == THUMBNAIL_DATA)
return "Thumbnail Data";
if(idx == DRIVER_INIT_PARAMS)
return "Driver Init Params";
if(idx == INITIAL_CONTENTS)
return "Initial Contents";
if(idx < FIRST_CHUNK_ID || idx >= NUM_VULKAN_CHUNKS)
return "<unknown>";
return VkChunkNames[idx - FIRST_CHUNK_ID];
}
if((SystemChunk)idx < SystemChunk::FirstDriverChunk)
return ToStr((SystemChunk)idx);
template <>
std::string DoStringise(const VulkanChunkType &el)
{
return WrappedVulkan::GetChunkName(el);
return ToStr((VulkanChunk)idx);
}
WrappedVulkan::ScopedDebugMessageSink::ScopedDebugMessageSink(WrappedVulkan *driver)
@@ -1724,7 +1582,7 @@ void WrappedVulkan::ReadLogInitialisation()
"% 5d chunks - Time: %9.3fms total/%9.3fms avg - Size: %8.3fMB total/%7.3fMB avg - %s (%u)",
it->second.count, it->second.total, it->second.total / dcount,
double(it->second.totalsize) / (1024.0 * 1024.0),
double(it->second.totalsize) / (dcount * 1024.0 * 1024.0), GetChunkName(it->first),
double(it->second.totalsize) / (dcount * 1024.0 * 1024.0), ToStr(it->first).c_str(),
uint32_t(it->first));
}
#endif
+1 -1
View File
@@ -701,7 +701,7 @@ public:
virtual ~WrappedVulkan();
ResourceId GetContextResourceID() { return m_FrameCaptureRecord->GetResourceID(); }
static const char *GetChunkName(uint32_t idx);
static std::string GetChunkName(uint32_t idx);
VulkanResourceManager *GetResourceManager() { return m_ResourceManager; }
VulkanDebugManager *GetDebugManager() { return m_DebugManager; }
LogState GetState() { return m_State; }
+111
View File
@@ -25,6 +25,117 @@
#include "vk_common.h"
#include "vk_resources.h"
template <>
std::string DoStringise(const VulkanChunk &el)
{
RDCCOMPILE_ASSERT((uint32_t)VulkanChunk::Max == 1099, "Chunks changed without updating names");
BEGIN_ENUM_STRINGISE(VulkanChunk)
{
STRINGISE_ENUM_CLASS(vkEnumeratePhysicalDevices);
STRINGISE_ENUM_CLASS(vkCreateDevice);
STRINGISE_ENUM_CLASS(vkGetDeviceQueue);
STRINGISE_ENUM_CLASS(vkAllocateMemory);
STRINGISE_ENUM_CLASS(vkUnmapMemory);
STRINGISE_ENUM_CLASS(vkFlushMappedMemoryRanges);
STRINGISE_ENUM_CLASS(vkCreateCommandPool);
STRINGISE_ENUM_CLASS(vkResetCommandPool);
STRINGISE_ENUM_CLASS(vkCreateFramebuffer);
STRINGISE_ENUM_CLASS(vkCreateRenderPass);
STRINGISE_ENUM_CLASS(vkCreateDescriptorPool);
STRINGISE_ENUM_CLASS(vkCreateDescriptorSetLayout);
STRINGISE_ENUM_CLASS(vkCreateBuffer);
STRINGISE_ENUM_CLASS(vkCreateBufferView);
STRINGISE_ENUM_CLASS(vkCreateImage);
STRINGISE_ENUM_CLASS(vkCreateImageView);
STRINGISE_ENUM_CLASS(vkCreateDepthTargetView);
STRINGISE_ENUM_CLASS(vkCreateSampler);
STRINGISE_ENUM_CLASS(vkCreateShaderModule);
STRINGISE_ENUM_CLASS(vkCreatePipelineLayout);
STRINGISE_ENUM_CLASS(vkCreatePipelineCache);
STRINGISE_ENUM_CLASS(vkCreateGraphicsPipelines);
STRINGISE_ENUM_CLASS(vkCreateComputePipelines);
STRINGISE_ENUM_CLASS(vkGetSwapchainImagesKHR);
STRINGISE_ENUM_CLASS(vkCreateSemaphore);
STRINGISE_ENUM_CLASS(vkCreateFence);
STRINGISE_ENUM_CLASS(vkGetFenceStatus);
STRINGISE_ENUM_CLASS(vkResetFences);
STRINGISE_ENUM_CLASS(vkWaitForFences);
STRINGISE_ENUM_CLASS(vkCreateEvent);
STRINGISE_ENUM_CLASS(vkGetEventStatus);
STRINGISE_ENUM_CLASS(vkSetEvent);
STRINGISE_ENUM_CLASS(vkResetEvent);
STRINGISE_ENUM_CLASS(vkCreateQueryPool);
STRINGISE_ENUM_CLASS(vkAllocateDescriptorSets);
STRINGISE_ENUM_CLASS(vkUpdateDescriptorSets);
STRINGISE_ENUM_CLASS(vkBeginCommandBuffer);
STRINGISE_ENUM_CLASS(vkEndCommandBuffer);
STRINGISE_ENUM_CLASS(vkQueueWaitIdle);
STRINGISE_ENUM_CLASS(vkDeviceWaitIdle);
STRINGISE_ENUM_CLASS(vkQueueSubmit);
STRINGISE_ENUM_CLASS(vkBindBufferMemory);
STRINGISE_ENUM_CLASS(vkBindImageMemory);
STRINGISE_ENUM_CLASS(vkQueueBindSparse);
STRINGISE_ENUM_CLASS(vkCmdBeginRenderPass);
STRINGISE_ENUM_CLASS(vkCmdNextSubpass);
STRINGISE_ENUM_CLASS(vkCmdExecuteCommands);
STRINGISE_ENUM_CLASS(vkCmdEndRenderPass);
STRINGISE_ENUM_CLASS(vkCmdBindPipeline);
STRINGISE_ENUM_CLASS(vkCmdSetViewport);
STRINGISE_ENUM_CLASS(vkCmdSetScissor);
STRINGISE_ENUM_CLASS(vkCmdSetLineWidth);
STRINGISE_ENUM_CLASS(vkCmdSetDepthBias);
STRINGISE_ENUM_CLASS(vkCmdSetBlendConstants);
STRINGISE_ENUM_CLASS(vkCmdSetDepthBounds);
STRINGISE_ENUM_CLASS(vkCmdSetStencilCompareMask);
STRINGISE_ENUM_CLASS(vkCmdSetStencilWriteMask);
STRINGISE_ENUM_CLASS(vkCmdSetStencilReference);
STRINGISE_ENUM_CLASS(vkCmdBindDescriptorSets);
STRINGISE_ENUM_CLASS(vkCmdBindVertexBuffers);
STRINGISE_ENUM_CLASS(vkCmdBindIndexBuffer);
STRINGISE_ENUM_CLASS(vkCmdCopyBufferToImage);
STRINGISE_ENUM_CLASS(vkCmdCopyImageToBuffer);
STRINGISE_ENUM_CLASS(vkCmdCopyBuffer);
STRINGISE_ENUM_CLASS(vkCmdCopyImage);
STRINGISE_ENUM_CLASS(vkCmdBlitImage);
STRINGISE_ENUM_CLASS(vkCmdResolveImage);
STRINGISE_ENUM_CLASS(vkCmdUpdateBuffer);
STRINGISE_ENUM_CLASS(vkCmdFillBuffer);
STRINGISE_ENUM_CLASS(vkCmdPushConstants);
STRINGISE_ENUM_CLASS(vkCmdClearColorImage);
STRINGISE_ENUM_CLASS(vkCmdClearDepthStencilImage);
STRINGISE_ENUM_CLASS(vkCmdClearAttachments);
STRINGISE_ENUM_CLASS(vkCmdPipelineBarrier);
STRINGISE_ENUM_CLASS(vkCmdWriteTimestamp);
STRINGISE_ENUM_CLASS(vkCmdCopyQueryPoolResults);
STRINGISE_ENUM_CLASS(vkCmdBeginQuery);
STRINGISE_ENUM_CLASS(vkCmdEndQuery);
STRINGISE_ENUM_CLASS(vkCmdResetQueryPool);
STRINGISE_ENUM_CLASS(vkCmdSetEvent);
STRINGISE_ENUM_CLASS(vkCmdResetEvent);
STRINGISE_ENUM_CLASS(vkCmdWaitEvents);
STRINGISE_ENUM_CLASS(vkCmdDraw);
STRINGISE_ENUM_CLASS(vkCmdDrawIndirect);
STRINGISE_ENUM_CLASS(vkCmdDrawIndexed);
STRINGISE_ENUM_CLASS(vkCmdDrawIndexedIndirect);
STRINGISE_ENUM_CLASS(vkCmdDispatch);
STRINGISE_ENUM_CLASS(vkCmdDispatchIndirect);
STRINGISE_ENUM_CLASS(vkCmdDebugMarkerBeginEXT);
STRINGISE_ENUM_CLASS(vkCmdDebugMarkerInsertEXT);
STRINGISE_ENUM_CLASS(vkCmdDebugMarkerEndEXT);
STRINGISE_ENUM_CLASS(vkDebugMarkerSetObjectNameEXT);
STRINGISE_ENUM_CLASS(vkCreateSwapchainKHR);
STRINGISE_ENUM_CLASS(SetShaderDebugPath);
STRINGISE_ENUM_CLASS(vkRegisterDeviceEventEXT);
STRINGISE_ENUM_CLASS(vkRegisterDisplayEventEXT);
STRINGISE_ENUM_CLASS_NAMED(CaptureScope, "Frame Capture Metadata");
STRINGISE_ENUM_CLASS_NAMED(CaptureBegin, "Beginning of Capture");
STRINGISE_ENUM_CLASS_NAMED(CaptureEnd, "End of Capture");
STRINGISE_ENUM_CLASS_NAMED(Max, "Max Chunk");
}
END_ENUM_STRINGISE()
}
template <>
std::string DoStringise(const VkResourceType &el)
{