fix output window vulkan valid/crashes

This commit is contained in:
Remi Palandri
2022-03-09 00:30:49 -08:00
committed by Baldur Karlsson
parent ad9a4e854f
commit 9d6526ff6e
+22 -5
View File
@@ -221,6 +221,23 @@ void VulkanReplay::OutputWindow::Create(WrappedVulkan *driver, VkDevice device,
// your drivers!
RDCASSERT(capabilities.supportedUsageFlags & VK_IMAGE_USAGE_TRANSFER_DST_BIT);
VkCompositeAlphaFlagBitsKHR compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
// find a supported alpha compositing mode
if((capabilities.supportedCompositeAlpha & compositeAlpha) == 0)
{
VkCompositeAlphaFlagBitsKHR compositingBits[] = {
VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR, VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR, VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR};
for(VkCompositeAlphaFlagBitsKHR &compositingBit : compositingBits)
{
if(capabilities.supportedCompositeAlpha & compositingBit)
{
compositeAlpha = compositingBit;
break;
}
}
}
// check format and present mode from driver
{
uint32_t numFormats = 0;
@@ -326,7 +343,7 @@ void VulkanReplay::OutputWindow::Create(WrappedVulkan *driver, VkDevice device,
0,
NULL,
VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
compositeAlpha,
presentmode,
true,
Unwrap(old),
@@ -908,13 +925,9 @@ void VulkanReplay::BindOutputWindow(uint64_t id, bool depth)
m_DebugHeight = (int32_t)outw.height;
VkDevice dev = m_pDriver->GetDev();
VkCommandBuffer cmd = m_pDriver->GetNextCmd();
const VkDevDispatchTable *vt = ObjDisp(dev);
VkResult vkr = VK_SUCCESS;
if(cmd == VK_NULL_HANDLE)
return;
// if we have a swapchain, acquire the next image.
if(outw.swap != VK_NULL_HANDLE)
{
@@ -968,6 +981,10 @@ void VulkanReplay::BindOutputWindow(uint64_t id, bool depth)
vt->DestroySemaphore(Unwrap(dev), sem, NULL);
}
VkCommandBuffer cmd = m_pDriver->GetNextCmd();
if(cmd == VK_NULL_HANDLE)
return;
VkCommandBufferBeginInfo beginInfo = {VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, NULL,
VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT};