From 0f47f5bc54db54d53adee51ec2b513ed80fe137c Mon Sep 17 00:00:00 2001 From: Caleb Cornett Date: Thu, 3 Nov 2022 15:45:40 -0400 Subject: [PATCH] transition the multisample texture when creating a render pass --- src/Refresh_Driver_Vulkan.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/Refresh_Driver_Vulkan.c b/src/Refresh_Driver_Vulkan.c index c2fb0fe..fe9da12 100644 --- a/src/Refresh_Driver_Vulkan.c +++ b/src/Refresh_Driver_Vulkan.c @@ -5540,6 +5540,7 @@ static VulkanRenderTarget* VULKAN_INTERNAL_FetchRenderTarget( static VkRenderPass VULKAN_INTERNAL_CreateRenderPass( VulkanRenderer *renderer, + VulkanCommandBuffer *commandBuffer, Refresh_ColorAttachmentInfo *colorAttachmentInfos, uint32_t colorAttachmentCount, Refresh_DepthStencilAttachmentInfo *depthStencilAttachmentInfo @@ -5575,6 +5576,23 @@ static VkRenderPass VULKAN_INTERNAL_CreateRenderPass( colorAttachmentInfos[i].sampleCount ); + if (renderTarget->multisampleTexture != NULL) + { + VULKAN_INTERNAL_ImageMemoryBarrier( + renderer, + commandBuffer->commandBuffer, + RESOURCE_ACCESS_COLOR_ATTACHMENT_WRITE, + VK_IMAGE_ASPECT_COLOR_BIT, + 0, + renderTarget->multisampleTexture->layerCount, + 0, + renderTarget->multisampleTexture->levelCount, + 0, + renderTarget->multisampleTexture->image, + &renderTarget->multisampleTexture->resourceAccessType + ); + } + if (renderTarget->multisampleCount > VK_SAMPLE_COUNT_1_BIT) { multisampling = 1; @@ -7982,6 +8000,7 @@ static void VULKAN_QueueDestroyGraphicsPipeline( static VkRenderPass VULKAN_INTERNAL_FetchRenderPass( VulkanRenderer *renderer, + VulkanCommandBuffer *commandBuffer, Refresh_ColorAttachmentInfo *colorAttachmentInfos, uint32_t colorAttachmentCount, Refresh_DepthStencilAttachmentInfo *depthStencilAttachmentInfo @@ -8032,6 +8051,7 @@ static VkRenderPass VULKAN_INTERNAL_FetchRenderPass( renderPass = VULKAN_INTERNAL_CreateRenderPass( renderer, + commandBuffer, colorAttachmentInfos, colorAttachmentCount, depthStencilAttachmentInfo @@ -8359,6 +8379,7 @@ static void VULKAN_BeginRenderPass( renderPass = VULKAN_INTERNAL_FetchRenderPass( renderer, + vulkanCommandBuffer, colorAttachmentInfos, colorAttachmentCount, depthStencilAttachmentInfo