[fence_manager, ui] antiflicker fix + toggle integration (#4004)

tldr: we (me and maran) found the missing piece to make delay_fence and should_flush coop and cover all remaining flicker issues tested so far.
the lil change is in src/video_core/fence_manager.h
the rest is toggle stuff.

END

(credits rolls up)

post credits scene for the toggle drama:

i've been forced to use custom builds for around 1 year now, coz gpu mode above fast was pulling performance down yet not covering flicker entirely in most games tested. and we know that it's a mess to rely on gpu mode as it brings along a bunch of undesired stuff.
i need this toggle. and i've seem far less relevant before, so hey, gimme this one so i can call it mine :3

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4004
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
This commit is contained in:
xbzk 2026-05-24 01:02:01 +02:00 committed by crueter
parent b870bd255c
commit eabd1017cc
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
7 changed files with 24 additions and 3 deletions

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
@ -76,9 +76,9 @@ public:
TryReleasePendingFences<false>();
}
const bool should_flush = ShouldFlush();
const bool delay_fence = Settings::IsGPULevelHigh() || (Settings::IsGPULevelMedium() && should_flush);
const bool delay_fence = Settings::values.antiflicker.GetValue() || !Settings::IsGPULevelLow();
CommitAsyncFlushes();
TFence new_fence = CreateFence(!should_flush);
TFence new_fence = CreateFence(!should_flush && !delay_fence);
if constexpr (can_async_check) {
guard.lock();
}