mirror of
https://github.com/libretro/RetroArch
synced 2025-03-18 04:21:19 +00:00
(Vulkan) Simplify code
This commit is contained in:
parent
d008cb14e2
commit
6b38a7916a
@ -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 &&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user