From 2b4d13c205cda607c34fd1b67d9bc7bab4cb6371 Mon Sep 17 00:00:00 2001 From: MaranBr Date: Wed, 31 Dec 2025 01:17:24 +0100 Subject: [PATCH] [video_core] Fix SignalFence and restore OpenGL rendering (#3224) Fixes OpenGL crashing on launch Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3224 Co-authored-by: MaranBr Co-committed-by: MaranBr --- src/video_core/fence_manager.h | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/video_core/fence_manager.h b/src/video_core/fence_manager.h index 61e4da9609..e4c4329e81 100644 --- a/src/video_core/fence_manager.h +++ b/src/video_core/fence_manager.h @@ -76,21 +76,20 @@ public: TryReleasePendingFences(); } const bool should_flush = ShouldFlush(); + const bool delay_fence = Settings::IsGPULevelHigh() || (Settings::IsGPULevelMedium() && should_flush); CommitAsyncFlushes(); TFence new_fence = CreateFence(!should_flush); if constexpr (can_async_check) { guard.lock(); } - if (Settings::IsGPULevelLow() || (Settings::IsGPULevelMedium() && !should_flush)) { - func(); - } else { + if (delay_fence) { uncommitted_operations.emplace_back(std::move(func)); } - if (!uncommitted_operations.empty()) { - pending_operations.emplace_back(std::move(uncommitted_operations)); - uncommitted_operations.clear(); - } + pending_operations.emplace_back(std::move(uncommitted_operations)); QueueFence(new_fence); + if (!delay_fence) { + func(); + } fences.push(std::move(new_fence)); if (should_flush) { rasterizer.FlushCommands();