mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-08 08:40:55 +00:00
Don't transition non-backbuffer images to PRESENT_SRC (Refs #185)
This commit is contained in:
@@ -51,6 +51,12 @@ VkAccessFlags MakeAccessMask(VkImageLayout layout)
|
||||
return VkAccessFlags(0);
|
||||
}
|
||||
|
||||
void ReplacePresentableImageLayout(VkImageLayout &layout)
|
||||
{
|
||||
if(layout == VK_IMAGE_LAYOUT_PRESENT_SRC_KHR)
|
||||
layout = VK_IMAGE_LAYOUT_GENERAL;
|
||||
}
|
||||
|
||||
int SampleCount(VkSampleCountFlagBits countFlag)
|
||||
{
|
||||
switch(countFlag)
|
||||
|
||||
@@ -55,6 +55,8 @@ VkPrimitiveTopology MakeVkPrimitiveTopology(PrimitiveTopology Topo);
|
||||
// set conservative access bits for this image layout
|
||||
VkAccessFlags MakeAccessMask(VkImageLayout layout);
|
||||
|
||||
void ReplacePresentableImageLayout(VkImageLayout &layout);
|
||||
|
||||
void DoPipelineBarrier(VkCommandBuffer cmd, uint32_t count, VkImageMemoryBarrier *barriers);
|
||||
void DoPipelineBarrier(VkCommandBuffer cmd, uint32_t count, VkBufferMemoryBarrier *barriers);
|
||||
void DoPipelineBarrier(VkCommandBuffer cmd, uint32_t count, VkMemoryBarrier *barriers);
|
||||
|
||||
@@ -663,6 +663,8 @@ bool WrappedVulkan::Serialise_BeginCaptureFrame(bool applyInitialState)
|
||||
{
|
||||
for(size_t i=0; i < imgBarriers.size(); i++)
|
||||
{
|
||||
ReplacePresentableImageLayout(imgBarriers[i].oldLayout);
|
||||
ReplacePresentableImageLayout(imgBarriers[i].newLayout);
|
||||
imgBarriers[i].srcAccessMask = MakeAccessMask(imgBarriers[i].oldLayout);
|
||||
imgBarriers[i].dstAccessMask = MakeAccessMask(imgBarriers[i].newLayout);
|
||||
}
|
||||
|
||||
@@ -1665,8 +1665,14 @@ bool WrappedVulkan::Serialise_vkCmdPipelineBarrier(
|
||||
bufBarriers.push_back(bufMemBarriers[i]);
|
||||
|
||||
for(uint32_t i=0; i < imgCount; i++)
|
||||
{
|
||||
if(imgMemBarriers[i].image != VK_NULL_HANDLE)
|
||||
{
|
||||
imgBarriers.push_back(imgMemBarriers[i]);
|
||||
ReplacePresentableImageLayout(imgBarriers.back().oldLayout);
|
||||
ReplacePresentableImageLayout(imgBarriers.back().newLayout);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SAFE_DELETE_ARRAY(bufMemBarriers);
|
||||
|
||||
@@ -699,8 +699,14 @@ bool WrappedVulkan::Serialise_vkCmdWaitEvents(
|
||||
bufBarriers.push_back(bufMemBarriers[i]);
|
||||
|
||||
for(uint32_t i=0; i < imgCount; i++)
|
||||
{
|
||||
if(imgBarriers[i].image != VK_NULL_HANDLE)
|
||||
{
|
||||
imgBarriers.push_back(imgMemBarriers[i]);
|
||||
ReplacePresentableImageLayout(imgBarriers.back().oldLayout);
|
||||
ReplacePresentableImageLayout(imgBarriers.back().newLayout);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SAFE_DELETE_ARRAY(bufMemBarriers);
|
||||
|
||||
Reference in New Issue
Block a user