From a68f9ba86a38ee088a8c9843a9ff216b761cff91 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 7 Jun 2022 22:31:02 +0100 Subject: [PATCH] Don't use dynamic rendering when we replace with a fixed renderpass --- renderdoc/driver/vulkan/vk_overlay.cpp | 15 +++++++++++++++ renderdoc/driver/vulkan/vk_postvs.cpp | 3 +++ 2 files changed, 18 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_overlay.cpp b/renderdoc/driver/vulkan/vk_overlay.cpp index 0d720cf3e..bd1e3c2bf 100644 --- a/renderdoc/driver/vulkan/vk_overlay.cpp +++ b/renderdoc/driver/vulkan/vk_overlay.cpp @@ -1005,6 +1005,9 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D pipeCreateInfo.renderPass = m_Overlay.NoDepthRP; pipeCreateInfo.subpass = 0; + // don't use dynamic rendering + RemoveNextStruct(&pipeCreateInfo, VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO); + bool found = false; for(uint32_t i = 0; i < pipeCreateInfo.stageCount; i++) { @@ -1218,6 +1221,9 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D pipeCreateInfo.renderPass = m_Overlay.NoDepthRP; pipeCreateInfo.subpass = 0; + // don't use dynamic rendering + RemoveNextStruct(&pipeCreateInfo, VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO); + VkPipelineShaderStageCreateInfo *fragShader = NULL; for(uint32_t i = 0; i < pipeCreateInfo.stageCount; i++) @@ -1509,6 +1515,9 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D pipeCreateInfo.renderPass = m_Overlay.NoDepthRP; pipeCreateInfo.subpass = 0; + // don't use dynamic rendering + RemoveNextStruct(&pipeCreateInfo, VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO); + VkPipelineShaderStageCreateInfo *fragShader = NULL; for(uint32_t i = 0; i < pipeCreateInfo.stageCount; i++) @@ -1832,6 +1841,9 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D pipeCreateInfo.renderPass = m_Overlay.NoDepthRP; } + // don't use dynamic rendering + RemoveNextStruct(&pipeCreateInfo, VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO); + vkr = m_pDriver->vkCreateGraphicsPipelines(m_Device, VK_NULL_HANDLE, 1, &pipeCreateInfo, NULL, &passpipe); CheckVkResult(vkr); @@ -2622,6 +2634,9 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D pipeCreateInfo.pVertexInputState = &vi; pipeCreateInfo.pColorBlendState = &cb; + // don't use dynamic rendering + RemoveNextStruct(&pipeCreateInfo, VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO); + uint32_t &dynamicStateCount = (uint32_t &)pipeCreateInfo.pDynamicState->dynamicStateCount; VkDynamicState *dynamicStateList = (VkDynamicState *)pipeCreateInfo.pDynamicState->pDynamicStates; diff --git a/renderdoc/driver/vulkan/vk_postvs.cpp b/renderdoc/driver/vulkan/vk_postvs.cpp index ac2c80e9c..16ef8f7c1 100644 --- a/renderdoc/driver/vulkan/vk_postvs.cpp +++ b/renderdoc/driver/vulkan/vk_postvs.cpp @@ -3039,6 +3039,9 @@ void VulkanReplay::FetchTessGSOut(uint32_t eventId, VulkanRenderState &state) pipeCreateInfo.renderPass = rp; pipeCreateInfo.subpass = 0; + // don't use dynamic rendering + RemoveNextStruct(&pipeCreateInfo, VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO); + VkPipeline pipe = VK_NULL_HANDLE; vkr = m_pDriver->vkCreateGraphicsPipelines(m_Device, VK_NULL_HANDLE, 1, &pipeCreateInfo, NULL, &pipe);