From 3649fc4134be68c3d51f64534829b0af385371e8 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 10 Dec 2015 12:13:34 +0100 Subject: [PATCH] Fix core compiling --- renderdoc/driver/vulkan/vk_common.h | 10 +- renderdoc/driver/vulkan/vk_core.cpp | 164 ++++++++++++--------------- renderdoc/driver/vulkan/vk_core.h | 1 + renderdoc/driver/vulkan/vk_debug.cpp | 54 +++++---- renderdoc/driver/vulkan/vk_debug.h | 5 +- 5 files changed, 109 insertions(+), 125 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index 4c1497b92..dea393571 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -184,7 +184,6 @@ enum VulkanChunkType CREATE_IMAGE_VIEW, CREATE_DEPTH_TARGET_VIEW, CREATE_SAMPLER, - CREATE_SHADER, CREATE_SHADER_MODULE, CREATE_PIPE_LAYOUT, CREATE_PIPE_CACHE, @@ -211,8 +210,6 @@ enum VulkanChunkType BEGIN_CMD_BUFFER, END_CMD_BUFFER, - QUEUE_SIGNAL_SEMAPHORE, - QUEUE_WAIT_SEMAPHORE, QUEUE_WAIT_IDLE, DEVICE_WAIT_IDLE, @@ -220,9 +217,7 @@ enum VulkanChunkType BIND_BUFFER_MEM, BIND_IMAGE_MEM, - BIND_SPARSE_BUF, - BIND_SPARSE_OPAQUE_IM, - BIND_SPARSE_IM, + BIND_SPARSE, BEGIN_RENDERPASS, NEXT_SUBPASS, @@ -256,8 +251,7 @@ enum VulkanChunkType CLEAR_COLOR, CLEAR_DEPTHSTENCIL, - CLEAR_COLOR_ATTACH, - CLEAR_DEPTHSTENCIL_ATTACH, + CLEAR_ATTACH, PIPELINE_BARRIER, WRITE_TIMESTAMP, diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index b94135dff..71a625b77 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -33,7 +33,7 @@ static bool operator <(const VkExtensionProperties &a, const VkExtensionProperties &b) { - int cmp = strcmp(a.extName, b.extName); + int cmp = strcmp(a.extensionName, b.extensionName); if(cmp == 0) return a.specVersion < b.specVersion; @@ -67,7 +67,6 @@ const char *VkChunkNames[] = "vkCreateImageView", "vkCreateDepthTargetView", "vkCreateSampler", - "vkCreateShader", "vkCreateShaderModule", "vkCreatePipelineLayout", "vkCreatePipelineCache", @@ -94,8 +93,6 @@ const char *VkChunkNames[] = "vkBeginCommandBuffer", "vkEndCommandBuffer", - "vkQueueSignalSemaphore", - "vkQueueWaitSemaphore", "vkQueueWaitIdle", "vkDeviceWaitIdle", @@ -103,9 +100,7 @@ const char *VkChunkNames[] = "vkBindBufferMemory", "vkBindImageMemory", - "vkQueueBindSparseBufferMemory", - "vkQueueBindSparseImageOpaqueMemory", - "vkQueueBindSparseImageMemory", + "vkQueueBindSparse", "vkCmdBeginRenderPass", "vkCmdNextSubpass", @@ -139,8 +134,7 @@ const char *VkChunkNames[] = "vkCmdClearColorImage", "vkCmdClearDepthStencilImage", - "vkCmdClearColorAttachment", - "vkCmdClearDepthStencilAttachment", + "vkCmdClearAttachments", "vkCmdPipelineBarrier", "vkCmdWriteTimestamp", @@ -206,17 +200,17 @@ void VkInitParams::Set(const VkInstanceCreateInfo* pCreateInfo, ResourceId inst) { RDCASSERT(pCreateInfo); - if(pCreateInfo->pAppInfo) + if(pCreateInfo->pApplicationInfo) { // we don't support any extensions on appinfo structure - RDCASSERT(pCreateInfo->pAppInfo->pNext == NULL); + RDCASSERT(pCreateInfo->pApplicationInfo->pNext == NULL); - AppName = pCreateInfo->pAppInfo->pAppName ? pCreateInfo->pAppInfo->pAppName : ""; - EngineName = pCreateInfo->pAppInfo->pEngineName ? pCreateInfo->pAppInfo->pEngineName : ""; + AppName = pCreateInfo->pApplicationInfo->pApplicationName ? pCreateInfo->pApplicationInfo->pApplicationName : ""; + EngineName = pCreateInfo->pApplicationInfo->pEngineName ? pCreateInfo->pApplicationInfo->pEngineName : ""; - AppVersion = pCreateInfo->pAppInfo->appVersion; - EngineVersion = pCreateInfo->pAppInfo->engineVersion; - APIVersion = pCreateInfo->pAppInfo->apiVersion; + AppVersion = pCreateInfo->pApplicationInfo->applicationVersion; + EngineVersion = pCreateInfo->pApplicationInfo->engineVersion; + APIVersion = pCreateInfo->pApplicationInfo->apiVersion; } else { @@ -228,13 +222,13 @@ void VkInitParams::Set(const VkInstanceCreateInfo* pCreateInfo, ResourceId inst) APIVersion = 0; } - Layers.resize(pCreateInfo->layerCount); - Extensions.resize(pCreateInfo->extensionCount); + Layers.resize(pCreateInfo->enabledLayerNameCount); + Extensions.resize(pCreateInfo->enabledExtensionNameCount); - for(uint32_t i=0; i < pCreateInfo->layerCount; i++) + for(uint32_t i=0; i < pCreateInfo->enabledLayerNameCount; i++) Layers[i] = pCreateInfo->ppEnabledLayerNames[i]; - for(uint32_t i=0; i < pCreateInfo->extensionCount; i++) + for(uint32_t i=0; i < pCreateInfo->enabledExtensionNameCount; i++) Extensions[i] = pCreateInfo->ppEnabledExtensionNames[i]; InstanceID = inst; @@ -374,8 +368,8 @@ VkCommandBuffer WrappedVulkan::GetNextCmd() } else { - VkCmdBufferCreateInfo cmdInfo = { VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO, NULL, Unwrap(m_InternalCmds.m_CmdPool), VK_CMD_BUFFER_LEVEL_PRIMARY, 0 }; - VkResult vkr = ObjDisp(m_Device)->CreateCommandBuffer(Unwrap(m_Device), &cmdInfo, &ret); + VkCommandBufferAllocateInfo cmdInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, NULL, Unwrap(m_InternalCmds.m_CmdPool), VK_COMMAND_BUFFER_LEVEL_PRIMARY, 1 }; + VkResult vkr = ObjDisp(m_Device)->AllocateCommandBuffers(Unwrap(m_Device), &cmdInfo, &ret); RDCASSERT(vkr == VK_SUCCESS); GetResourceManager()->WrapResource(Unwrap(m_Device), ret); @@ -395,7 +389,14 @@ void WrappedVulkan::SubmitCmds() vector cmds = m_InternalCmds.pendingcmds; for(size_t i=0; i < cmds.size(); i++) cmds[i] = Unwrap(cmds[i]); - VkResult vkr = ObjDisp(m_Queue)->QueueSubmit(Unwrap(m_Queue), (uint32_t)cmds.size(), &cmds[0], VK_NULL_HANDLE); + VkSubmitInfo submitInfo = { + VK_STRUCTURE_TYPE_SUBMIT_INFO, NULL, + 0, NULL, // wait semaphores + (uint32_t)cmds.size(), &cmds[0], // command buffers + 0, NULL, // signal semaphores + }; + + VkResult vkr = ObjDisp(m_Queue)->QueueSubmit(Unwrap(m_Queue), 1, &submitInfo, VK_NULL_HANDLE); RDCASSERT(vkr == VK_SUCCESS); m_InternalCmds.submittedcmds.insert(m_InternalCmds.submittedcmds.end(), m_InternalCmds.pendingcmds.begin(), m_InternalCmds.pendingcmds.end()); @@ -760,22 +761,21 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd) // create identical image VkImageCreateInfo imInfo = { - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, NULL, + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, NULL, 0, VK_IMAGE_TYPE_2D, swapInfo.format, - { swapInfo.extent.width, swapInfo.extent.height, 1 }, 1, 1, 1, - VK_IMAGE_TILING_LINEAR, VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT, - 0, + { swapInfo.extent.width, swapInfo.extent.height, 1 }, 1, 1, + VK_SAMPLE_COUNT_1_BIT, + VK_IMAGE_TILING_LINEAR, VK_IMAGE_USAGE_TRANSFER_DST_BIT, VK_SHARING_MODE_EXCLUSIVE, 0, NULL, VK_IMAGE_LAYOUT_UNDEFINED, }; - vt->CreateImage(Unwrap(dev), &imInfo, &readbackIm); + vt->CreateImage(Unwrap(dev), &imInfo, NULL, &readbackIm); RDCASSERT(vkr == VK_SUCCESS); VkMemoryRequirements mrq; - vkr = vt->GetImageMemoryRequirements(Unwrap(dev), readbackIm, &mrq); - RDCASSERT(vkr == VK_SUCCESS); + vt->GetImageMemoryRequirements(Unwrap(dev), readbackIm, &mrq); - VkImageSubresource subr = { VK_IMAGE_ASPECT_COLOR, 0, 0 }; + VkImageSubresource subr = { VK_IMAGE_ASPECT_COLOR_BIT, 0, 0 }; VkSubresourceLayout layout = { 0 }; vt->GetImageSubresourceLayout(Unwrap(dev), readbackIm, &subr, &layout); @@ -785,7 +785,7 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd) mrq.size, GetReadbackMemoryIndex(mrq.memoryTypeBits), }; - vkr = vt->AllocMemory(Unwrap(dev), &allocInfo, &readbackMem); + vkr = vt->AllocateMemory(Unwrap(dev), &allocInfo, NULL, &readbackMem); RDCASSERT(vkr == VK_SUCCESS); vkr = vt->BindImageMemory(Unwrap(dev), readbackIm, readbackMem, 0); RDCASSERT(vkr == VK_SUCCESS); @@ -797,16 +797,16 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd) RDCASSERT(vkr == VK_SUCCESS); VkImageCopy cpy = { - { VK_IMAGE_ASPECT_COLOR, 0, 0, 1 }, + { VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1 }, { 0, 0, 0 }, - { VK_IMAGE_ASPECT_COLOR, 0, 0, 1 }, + { VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1 }, { 0, 0, 0 }, { imInfo.extent.width, imInfo.extent.height, 1 }, }; VkImageMemoryBarrier bbBarrier = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, NULL, - 0, 0, VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + 0, 0, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED, Unwrap(backbuffer), { VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 } @@ -942,8 +942,8 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd) vt->UnmapMemory(Unwrap(dev), readbackMem); // delete all - vt->DestroyImage(Unwrap(dev), readbackIm); - vt->FreeMemory(Unwrap(dev), readbackMem); + vt->DestroyImage(Unwrap(dev), readbackIm, NULL); + vt->FreeMemory(Unwrap(dev), readbackMem, NULL); } byte *jpgbuf = NULL; @@ -1264,14 +1264,14 @@ void WrappedVulkan::ContextReplayLog(LogState readType, uint32_t startEventID, u // destroy any events we created for waiting on for(size_t i=0; i < m_CleanupEvents.size(); i++) - ObjDisp(GetDev())->DestroyEvent(Unwrap(GetDev()), m_CleanupEvents[i]); + ObjDisp(GetDev())->DestroyEvent(Unwrap(GetDev()), m_CleanupEvents[i], NULL); m_CleanupEvents.clear(); if(m_PartialReplayData.resultPartialCmdBuffer != VK_NULL_HANDLE) { // deliberately call our own function, so this is destroyed as a wrapped object - vkDestroyCommandBuffer(m_PartialReplayData.partialDevice, m_PartialReplayData.resultPartialCmdBuffer); + vkFreeCommandBuffers(m_PartialReplayData.partialDevice, m_PartialReplayData.resultPartialCmdPool, 1, &m_PartialReplayData.resultPartialCmdBuffer); m_PartialReplayData.resultPartialCmdBuffer = VK_NULL_HANDLE; } @@ -1339,14 +1339,14 @@ void WrappedVulkan::ProcessChunk(uint64_t offset, VulkanChunkType context) Serialise_vkEnumeratePhysicalDevices(GetMainSerialiser(), NULL, NULL, NULL); break; case CREATE_DEVICE: - Serialise_vkCreateDevice(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateDevice(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case GET_DEVICE_QUEUE: Serialise_vkGetDeviceQueue(GetMainSerialiser(), VK_NULL_HANDLE, 0, 0, NULL); break; case ALLOC_MEM: - Serialise_vkAllocMemory(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkAllocateMemory(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case UNMAP_MEM: Serialise_vkUnmapMemory(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE); @@ -1358,65 +1358,62 @@ void WrappedVulkan::ProcessChunk(uint64_t offset, VulkanChunkType context) RDCERR("vkFreeMemory should not be serialised directly"); break; case CREATE_CMD_POOL: - Serialise_vkCreateCommandPool(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateCommandPool(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_CMD_BUFFER: RDCERR("vkCreateCommandBuffer should not be serialised directly"); break; case CREATE_FRAMEBUFFER: - Serialise_vkCreateFramebuffer(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateFramebuffer(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_RENDERPASS: - Serialise_vkCreateRenderPass(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateRenderPass(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_DESCRIPTOR_POOL: - Serialise_vkCreateDescriptorPool(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateDescriptorPool(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_DESCRIPTOR_SET_LAYOUT: - Serialise_vkCreateDescriptorSetLayout(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateDescriptorSetLayout(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_BUFFER: - Serialise_vkCreateBuffer(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateBuffer(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_BUFFER_VIEW: - Serialise_vkCreateBufferView(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateBufferView(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_IMAGE: - Serialise_vkCreateImage(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateImage(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_IMAGE_VIEW: - Serialise_vkCreateImageView(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateImageView(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_SAMPLER: - Serialise_vkCreateSampler(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); - break; - case CREATE_SHADER: - Serialise_vkCreateShader(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateSampler(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_SHADER_MODULE: - Serialise_vkCreateShaderModule(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateShaderModule(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_PIPE_LAYOUT: - Serialise_vkCreatePipelineLayout(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreatePipelineLayout(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_PIPE_CACHE: - Serialise_vkCreatePipelineCache(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreatePipelineCache(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_GRAPHICS_PIPE: - Serialise_vkCreateGraphicsPipelines(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, 0, NULL, NULL); + Serialise_vkCreateGraphicsPipelines(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, 0, NULL, NULL, NULL); break; case CREATE_COMPUTE_PIPE: - Serialise_vkCreateComputePipelines(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, 0, NULL, NULL); + Serialise_vkCreateComputePipelines(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, 0, NULL, NULL, NULL); break; case GET_SWAPCHAIN_IMAGE: Serialise_vkGetSwapchainImagesKHR(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, NULL, NULL); break; case CREATE_SEMAPHORE: - Serialise_vkCreateSemaphore(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateSemaphore(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CREATE_FENCE: - Serialise_vkCreateFence(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateFence(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case GET_FENCE_STATUS: Serialise_vkGetFenceStatus(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE); @@ -1429,7 +1426,7 @@ void WrappedVulkan::ProcessChunk(uint64_t offset, VulkanChunkType context) break; case CREATE_EVENT: - Serialise_vkCreateEvent(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateEvent(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case GET_EVENT_STATUS: Serialise_vkGetEventStatus(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE); @@ -1442,11 +1439,11 @@ void WrappedVulkan::ProcessChunk(uint64_t offset, VulkanChunkType context) break; case CREATE_QUERY_POOL: - Serialise_vkCreateQueryPool(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateQueryPool(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case ALLOC_DESC_SET: - Serialise_vkAllocDescriptorSets(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_DESCRIPTOR_SET_USAGE_MAX_ENUM, 0, NULL, NULL); + Serialise_vkAllocateDescriptorSets(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); break; case UPDATE_DESC_SET: Serialise_vkUpdateDescriptorSets(GetMainSerialiser(), VK_NULL_HANDLE, 0, NULL, 0, NULL); @@ -1459,12 +1456,6 @@ void WrappedVulkan::ProcessChunk(uint64_t offset, VulkanChunkType context) Serialise_vkEndCommandBuffer(GetMainSerialiser(), VK_NULL_HANDLE); break; - case QUEUE_SIGNAL_SEMAPHORE: - Serialise_vkQueueSignalSemaphore(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE); - break; - case QUEUE_WAIT_SEMAPHORE: - Serialise_vkQueueWaitSemaphore(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE); - break; case QUEUE_WAIT_IDLE: Serialise_vkQueueWaitIdle(GetMainSerialiser(), VK_NULL_HANDLE); break; @@ -1482,21 +1473,15 @@ void WrappedVulkan::ProcessChunk(uint64_t offset, VulkanChunkType context) Serialise_vkBindImageMemory(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_NULL_HANDLE, 0); break; - case BIND_SPARSE_BUF: - Serialise_vkQueueBindSparseBufferMemory(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, 0, NULL); - break; - case BIND_SPARSE_OPAQUE_IM: - Serialise_vkQueueBindSparseImageOpaqueMemory(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, 0, NULL); - break; - case BIND_SPARSE_IM: - Serialise_vkQueueBindSparseImageMemory(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, 0, NULL); + case BIND_SPARSE: + Serialise_vkQueueBindSparse(GetMainSerialiser(), VK_NULL_HANDLE, 0, NULL, VK_NULL_HANDLE); break; case BEGIN_RENDERPASS: - Serialise_vkCmdBeginRenderPass(GetMainSerialiser(), VK_NULL_HANDLE, NULL, VK_RENDER_PASS_CONTENTS_MAX_ENUM); + Serialise_vkCmdBeginRenderPass(GetMainSerialiser(), VK_NULL_HANDLE, NULL, VK_SUBPASS_CONTENTS_MAX_ENUM); break; case NEXT_SUBPASS: - Serialise_vkCmdNextSubpass(GetMainSerialiser(), VK_NULL_HANDLE, VK_RENDER_PASS_CONTENTS_MAX_ENUM); + Serialise_vkCmdNextSubpass(GetMainSerialiser(), VK_NULL_HANDLE, VK_SUBPASS_CONTENTS_MAX_ENUM); break; case EXEC_CMDS: Serialise_vkCmdExecuteCommands(GetMainSerialiser(), VK_NULL_HANDLE, 0, NULL); @@ -1554,7 +1539,7 @@ void WrappedVulkan::ProcessChunk(uint64_t offset, VulkanChunkType context) Serialise_vkCmdCopyImage(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_IMAGE_LAYOUT_MAX_ENUM, VK_NULL_HANDLE, VK_IMAGE_LAYOUT_MAX_ENUM, 0, NULL); break; case BLIT_IMG: - Serialise_vkCmdBlitImage(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_IMAGE_LAYOUT_MAX_ENUM, VK_NULL_HANDLE, VK_IMAGE_LAYOUT_MAX_ENUM, 0, NULL, VK_TEX_FILTER_MAX_ENUM); + Serialise_vkCmdBlitImage(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_IMAGE_LAYOUT_MAX_ENUM, VK_NULL_HANDLE, VK_IMAGE_LAYOUT_MAX_ENUM, 0, NULL, VK_FILTER_MAX_ENUM); break; case RESOLVE_IMG: Serialise_vkCmdResolveImage(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_IMAGE_LAYOUT_MAX_ENUM, VK_NULL_HANDLE, VK_IMAGE_LAYOUT_MAX_ENUM, 0, NULL); @@ -1577,17 +1562,14 @@ void WrappedVulkan::ProcessChunk(uint64_t offset, VulkanChunkType context) case CLEAR_DEPTHSTENCIL: Serialise_vkCmdClearDepthStencilImage(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_IMAGE_LAYOUT_MAX_ENUM, NULL, 0, NULL); break; - case CLEAR_COLOR_ATTACH: - Serialise_vkCmdClearColorAttachment(GetMainSerialiser(), VK_NULL_HANDLE, 0, VK_IMAGE_LAYOUT_MAX_ENUM, NULL, 0, NULL); - break; - case CLEAR_DEPTHSTENCIL_ATTACH: - Serialise_vkCmdClearDepthStencilAttachment(GetMainSerialiser(), VK_NULL_HANDLE, 0, VK_IMAGE_LAYOUT_MAX_ENUM, NULL, 0, NULL); + case CLEAR_ATTACH: + Serialise_vkCmdClearAttachments(GetMainSerialiser(), VK_NULL_HANDLE, 0, NULL, 0, NULL); break; case PIPELINE_BARRIER: Serialise_vkCmdPipelineBarrier(GetMainSerialiser(), VK_NULL_HANDLE, 0, 0, VK_FALSE, 0, NULL); break; case WRITE_TIMESTAMP: - Serialise_vkCmdWriteTimestamp(GetMainSerialiser(), VK_NULL_HANDLE, VK_TIMESTAMP_TYPE_MAX_ENUM, VK_NULL_HANDLE, 0); + Serialise_vkCmdWriteTimestamp(GetMainSerialiser(), VK_NULL_HANDLE, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_NULL_HANDLE, 0); break; case COPY_QUERY_RESULTS: Serialise_vkCmdCopyQueryPoolResults(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, 0, 0, VK_NULL_HANDLE, 0, 0, VK_QUERY_RESULT_DEFAULT); @@ -1603,13 +1585,13 @@ void WrappedVulkan::ProcessChunk(uint64_t offset, VulkanChunkType context) break; case CMD_SET_EVENT: - Serialise_vkCmdSetEvent(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_PIPELINE_STAGE_ALL_GPU_COMMANDS); + Serialise_vkCmdSetEvent(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); break; case CMD_RESET_EVENT: - Serialise_vkCmdResetEvent(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_PIPELINE_STAGE_ALL_GPU_COMMANDS); + Serialise_vkCmdResetEvent(GetMainSerialiser(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); break; case CMD_WAIT_EVENTS: - Serialise_vkCmdWaitEvents(GetMainSerialiser(), VK_NULL_HANDLE, 0, NULL, VK_PIPELINE_STAGE_ALL_GPU_COMMANDS, VK_PIPELINE_STAGE_ALL_GPU_COMMANDS, 0, NULL); + Serialise_vkCmdWaitEvents(GetMainSerialiser(), VK_NULL_HANDLE, 0, NULL, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, NULL); break; case DRAW: @@ -1642,7 +1624,7 @@ void WrappedVulkan::ProcessChunk(uint64_t offset, VulkanChunkType context) break; case CREATE_SWAP_BUFFER: - Serialise_vkCreateSwapchainKHR(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL); + Serialise_vkCreateSwapchainKHR(GetMainSerialiser(), VK_NULL_HANDLE, NULL, NULL, NULL); break; case CAPTURE_SCOPE: diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index e10fc7843..fa6d252c9 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -264,6 +264,7 @@ private: // the command buffer chunks, the partial command buffer will be // created as a temporary new command buffer and when it comes to // the queue that should submit it, it can submit this instead. + VkCommandPool resultPartialCmdPool; VkCommandBuffer resultPartialCmdBuffer; VkDevice partialDevice; // device for above cmd buffer diff --git a/renderdoc/driver/vulkan/vk_debug.cpp b/renderdoc/driver/vulkan/vk_debug.cpp index dd53a09be..e7fe55309 100644 --- a/renderdoc/driver/vulkan/vk_debug.cpp +++ b/renderdoc/driver/vulkan/vk_debug.cpp @@ -185,11 +185,11 @@ void VulkanDebugManager::GPUBuffer::Create(WrappedVulkan *driver, VkDevice dev, RDCASSERT(vkr == VK_SUCCESS); } -void VulkanDebugManager::GPUBuffer::FillDescriptor(VkDescriptorInfo &desc) +void VulkanDebugManager::GPUBuffer::FillDescriptor(VkDescriptorBufferInfo &desc) { - desc.bufferInfo.buffer = Unwrap(buf); - desc.bufferInfo.offset = 0; - desc.bufferInfo.range = sz; + desc.buffer = Unwrap(buf); + desc.offset = 0; + desc.range = sz; } void VulkanDebugManager::GPUBuffer::Destroy(const VkLayerDispatchTable *vt, VkDevice dev) @@ -1243,50 +1243,58 @@ VulkanDebugManager::VulkanDebugManager(WrappedVulkan *driver, VkDevice dev) // don't need to ring this, as we hard-sync for readback anyway m_HistogramUBO.Create(driver, dev, sizeof(histogramuniforms), 1, 0); - VkDescriptorInfo desc[8]; - RDCEraseEl(desc); + VkDescriptorBufferInfo bufInfo[6]; + RDCEraseEl(bufInfo); // tex display is updated right before rendering - m_CheckerboardUBO.FillDescriptor(desc[0]); - m_TextGeneralUBO.FillDescriptor(desc[1]); - m_TextGlyphUBO.FillDescriptor(desc[2]); - m_TextStringUBO.FillDescriptor(desc[3]); - desc[4].imageLayout = VK_IMAGE_LAYOUT_GENERAL; - desc[4].imageView = Unwrap(m_TextAtlasView); - desc[4].sampler = Unwrap(m_LinearSampler); + m_CheckerboardUBO.FillDescriptor(bufInfo[0]); + m_TextGeneralUBO.FillDescriptor(bufInfo[1]); + m_TextGlyphUBO.FillDescriptor(bufInfo[2]); + m_TextStringUBO.FillDescriptor(bufInfo[3]); + m_MeshUBO.FillDescriptor(bufInfo[4]); + m_OutlineUBO.FillDescriptor(bufInfo[5]); + + VkDescriptorImageInfo atlasImInfo; + atlasImInfo.imageLayout = VK_IMAGE_LAYOUT_GENERAL; + atlasImInfo.imageView = Unwrap(m_TextAtlasView); + atlasImInfo.sampler = Unwrap(m_LinearSampler); - m_MeshUBO.FillDescriptor(desc[6]); - m_OutlineUBO.FillDescriptor(desc[7]); - VkWriteDescriptorSet writeSet[] = { { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, NULL, - Unwrap(m_CheckerboardDescSet), 0, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, &desc[0] + Unwrap(m_CheckerboardDescSet), 0, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, + NULL, &bufInfo[0], NULL }, { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, NULL, - Unwrap(m_TextDescSet), 0, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, &desc[1] + Unwrap(m_TextDescSet), 0, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, + NULL, &bufInfo[1], NULL }, { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, NULL, - Unwrap(m_TextDescSet), 1, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, &desc[2] + Unwrap(m_TextDescSet), 1, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + NULL, &bufInfo[2], NULL }, { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, NULL, - Unwrap(m_TextDescSet), 2, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, &desc[3] + Unwrap(m_TextDescSet), 2, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, + NULL, &bufInfo[3], NULL }, { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, NULL, - Unwrap(m_TextDescSet), 3, 0, 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, &desc[4] + Unwrap(m_TextDescSet), 3, 0, 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER + &atlasImInfo, NULL, NULL }, { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, NULL, - Unwrap(m_MeshDescSet), 0, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, &desc[6] + Unwrap(m_MeshDescSet), 0, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, + NULL, &bufInfo[4], NULL }, { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, NULL, - Unwrap(m_OutlineDescSet), 0, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, &desc[7] + Unwrap(m_OutlineDescSet), 0, 0, 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, + NULL, &bufInfo[5], NULL }, }; diff --git a/renderdoc/driver/vulkan/vk_debug.h b/renderdoc/driver/vulkan/vk_debug.h index 9fce44161..e70d3ddba 100644 --- a/renderdoc/driver/vulkan/vk_debug.h +++ b/renderdoc/driver/vulkan/vk_debug.h @@ -127,7 +127,7 @@ class VulkanDebugManager void Create(WrappedVulkan *driver, VkDevice dev, VkDeviceSize size, uint32_t ringSize, uint32_t flags); void Destroy(const VkLayerDispatchTable *vt, VkDevice dev); - void FillDescriptor(VkDescriptorInfo &desc); + void FillDescriptor(VkDescriptorBufferInfo &desc); void *Map(const VkLayerDispatchTable *vt, VkDevice dev, VkDeviceSize &bindoffset, VkDeviceSize usedsize = 0); void *Map(const VkLayerDispatchTable *vt, VkDevice dev, uint32_t *bindoffset = NULL, VkDeviceSize usedsize = 0); @@ -202,7 +202,6 @@ class VulkanDebugManager VkPipelineLayout m_MeshPipeLayout; VkDescriptorSet m_MeshDescSet; GPUBuffer m_MeshUBO, m_MeshBBoxVB, m_MeshAxisFrustumVB; - VkShader m_MeshShaders[3]; VkShaderModule m_MeshModules[3]; GPUBuffer m_MinMaxTileResult; // tile result buffer @@ -236,7 +235,7 @@ class VulkanDebugManager VulkanResourceManager *GetResourceManager() { return m_ResourceManager; } - void PatchFixedColShader(VkShaderModule &mod, VkShader &shad, float col[4]); + void PatchFixedColShader(VkShaderModule &mod, float col[4]); void RenderTextInternal(const TextPrintState &textstate, float x, float y, const char *text); void MakeGraphicsPipelineInfo(VkGraphicsPipelineCreateInfo &pipeCreateInfo, ResourceId pipeline);