aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRibbit <ribbit@eden-emu.dev>2025-10-15 22:12:25 +0200
committercrueter <crueter@eden-emu.dev>2025-10-15 22:12:25 +0200
commitf273ac446bb4d0badc8c3ac949fe0ed3534eb034 (patch)
tree9345f6f330597c313d8afe82e92b0e90dbb103bf /src
parent3f725c979dcf87c933b23095ad664489c044fc52 (diff)
[vk] Tighten queue wait stages (#2734)
Wait only at the transfer and color stages instead of every stage. That keeps things in sync without stalling the whole GPU. This should work according to spec, just need to test and verify no regressions across all platforms (Windows, Linux, Android, Mac OS) Can be 0.0.4 or 0.0.5 up to the team. Co-authored-by: Ribbit <ribbit@placeholder.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2734 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev> Co-authored-by: Ribbit <ribbit@eden-emu.dev> Co-committed-by: Ribbit <ribbit@eden-emu.dev>
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_vulkan/vk_master_semaphore.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/vk_master_semaphore.cpp b/src/video_core/renderer_vulkan/vk_master_semaphore.cpp
index e65755de64..001b1b84d8 100644
--- a/src/video_core/renderer_vulkan/vk_master_semaphore.cpp
+++ b/src/video_core/renderer_vulkan/vk_master_semaphore.cpp
@@ -114,8 +114,11 @@ VkResult MasterSemaphore::SubmitQueue(vk::CommandBuffer& cmdbuf, vk::CommandBuff
}
}
+// Use precise wait stages instead of ALL_COMMANDS to avoid pipeline-wide stalls.
+// First entry is used for external acquire waits; we wait at transfer and color output stages
+// because this submit contains an upload cmd buffer and a render cmd buffer.
static constexpr std::array<VkPipelineStageFlags, 2> wait_stage_masks{
- VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
+ VK_PIPELINE_STAGE_TRANSFER_BIT | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
};