From f9381aac2e84cb631984950cd30bc83e67425a6a Mon Sep 17 00:00:00 2001 From: Pavel Barabanov Date: Fri, 18 Jul 2025 07:09:52 +0300 Subject: [PATCH] fix-0-fps-normal-android --- src/video_core/fence_manager.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/video_core/fence_manager.h b/src/video_core/fence_manager.h index 2135f1f2da..68105a849c 100644 --- a/src/video_core/fence_manager.h +++ b/src/video_core/fence_manager.h @@ -73,15 +73,27 @@ public: void SignalFence(std::function&& func) { bool delay_fence = Settings::IsGPULevelHigh(); + #ifdef __ANDROID__ + if (!delay_fence) { + TryReleasePendingFences(); + } + #else if constexpr (!can_async_check) { TryReleasePendingFences(); } + #endif const bool should_flush = ShouldFlush(); CommitAsyncFlushes(); TFence new_fence = CreateFence(!should_flush); + #ifdef __ANDROID__ + if (delay_fence) { + guard.lock(); + } + #else if constexpr (can_async_check) { guard.lock(); } + #endif if (delay_fence) { uncommitted_operations.emplace_back(std::move(func)); } @@ -94,10 +106,17 @@ public: if (should_flush) { rasterizer.FlushCommands(); } + #ifdef __ANDROID__ + if (delay_fence) { + guard.unlock(); + cv.notify_all(); + } + #else if constexpr (can_async_check) { guard.unlock(); cv.notify_all(); } + #endif rasterizer.InvalidateGPUCache(); }