(Vulkan) Simplify code

This commit is contained in:
twinaphex 2020-12-15 06:19:48 +01:00
parent d008cb14e2
commit 6b38a7916a

View File

@ -2080,52 +2080,58 @@ static bool vulkan_frame(void *data, const void *frame,
*/ */
vulkan_filter_chain_end_frame((vulkan_filter_chain_t*)vk->filter_chain, vk->cmd); vulkan_filter_chain_end_frame((vulkan_filter_chain_t*)vk->filter_chain, vk->cmd);
if ( if (
backbuffer->image != VK_NULL_HANDLE && backbuffer->image != VK_NULL_HANDLE
vk->context->has_acquired_swapchain && && vk->context->has_acquired_swapchain
(vk->readback.pending || vk->readback.streamed)) )
{ {
/* We cannot safely read back from an image which if (vk->readback.pending || vk->readback.streamed)
* has already been presented as we need to {
* maintain the PRESENT_SRC_KHR layout. /* We cannot safely read back from an image which
* * has already been presented as we need to
* If we're reading back, perform the readback before presenting. * maintain the PRESENT_SRC_KHR layout.
*/ *
VULKAN_IMAGE_LAYOUT_TRANSITION( * If we're reading back,
vk->cmd, backbuffer->image, * perform the readback before presenting.
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, */
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VULKAN_IMAGE_LAYOUT_TRANSITION(
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, vk->cmd,
VK_ACCESS_TRANSFER_READ_BIT, backbuffer->image,
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
VK_PIPELINE_STAGE_TRANSFER_BIT); VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
VK_ACCESS_TRANSFER_READ_BIT,
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
VK_PIPELINE_STAGE_TRANSFER_BIT);
vulkan_readback(vk); vulkan_readback(vk);
/* Prepare for presentation after transfers are complete. */ /* Prepare for presentation after transfers are complete. */
VULKAN_IMAGE_LAYOUT_TRANSITION(vk->cmd, VULKAN_IMAGE_LAYOUT_TRANSITION(
backbuffer->image, vk->cmd,
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, backbuffer->image,
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
0, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
VK_ACCESS_MEMORY_READ_BIT, 0,
VK_PIPELINE_STAGE_TRANSFER_BIT, VK_ACCESS_MEMORY_READ_BIT,
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT); VK_PIPELINE_STAGE_TRANSFER_BIT,
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT);
vk->readback.pending = false; vk->readback.pending = false;
} }
else if (backbuffer->image != VK_NULL_HANDLE && else
vk->context->has_acquired_swapchain) {
{ /* Prepare backbuffer for presentation. */
/* Prepare backbuffer for presentation. */ VULKAN_IMAGE_LAYOUT_TRANSITION(
VULKAN_IMAGE_LAYOUT_TRANSITION(vk->cmd, vk->cmd,
backbuffer->image, backbuffer->image,
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
0, 0,
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT); VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT);
}
} }
if (waits_for_semaphores && if (waits_for_semaphores &&