From c47eb9760b1ae15bc039a53714446878531bca49 Mon Sep 17 00:00:00 2001
From: Gamer64 <76565986+Gamer64ytb@users.noreply.github.com>
Date: Fri, 1 Aug 2025 18:11:47 +0200
Subject: [PATCH] Android: Expose "Disable Buffer Reorder" option
---
.../yuzu_emu/features/settings/model/BooleanSetting.kt | 1 +
.../yuzu_emu/features/settings/model/view/SettingsItem.kt | 7 +++++++
.../features/settings/ui/SettingsFragmentPresenter.kt | 1 +
src/android/app/src/main/res/values/strings.xml | 2 ++
src/common/settings.h | 2 +-
5 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt
index 92a49a1de7..05c455e290 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt
@@ -26,6 +26,7 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
RENDERER_FAST_GPU("use_fast_gpu_time"),
RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"),
RENDERER_EARLY_RELEASE_FENCES("early_release_fences"),
+ BUFFER_REORDER_DISABLE("disable_buffer_reorder"),
RENDERER_DEBUG("debug"),
RENDERER_PROVOKING_VERTEX("provoking_vertex"),
RENDERER_DESCRIPTOR_INDEXING("descriptor_indexing"),
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
index d4335ddcd8..85bc711af1 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
@@ -673,6 +673,13 @@ abstract class SettingsItem(
descriptionId = R.string.renderer_early_release_fences_description
)
)
+ put(
+ SwitchSetting(
+ BooleanSetting.BUFFER_REORDER_DISABLE,
+ titleId = R.string.buffer_reorder_disable,
+ descriptionId = R.string.buffer_reorder_disable_description
+ )
+ )
put(
SingleChoiceSetting(
IntSetting.MAX_ANISOTROPY,
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
index 8555b334ee..93d45488d7 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
@@ -449,6 +449,7 @@ class SettingsFragmentPresenter(
add(HeaderSetting(R.string.veil_renderer))
add(BooleanSetting.ENABLE_RAII.key)
add(BooleanSetting.RENDERER_EARLY_RELEASE_FENCES.key)
+ add(BooleanSetting.BUFFER_REORDER_DISABLE.key)
add(BooleanSetting.FRAME_INTERPOLATION.key)
add(BooleanSetting.RENDERER_FAST_GPU.key)
add(IntSetting.FAST_GPU_TIME.key)
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index f1baab8f2d..716a1de04a 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -90,6 +90,8 @@
Ensures smooth and consistent frame delivery by synchronizing the timing between frames, reducing stuttering and uneven animation. Ideal for games that experience frame timing instability or micro-stutters during gameplay.
Release Fences Early
Helps fix 0 FPS in games like DKCR:HD, Subnautica Below Zero and Ori 2, but may break loading or performance in Unreal Engine games.
+ Disable Buffer Reorder
+ When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.
CPU and Memory
Synchronize Core Speed
diff --git a/src/common/settings.h b/src/common/settings.h
index 702926d82a..41c042bcf1 100644
--- a/src/common/settings.h
+++ b/src/common/settings.h
@@ -451,7 +451,7 @@ struct Values {
"vram_usage_mode",
Category::RendererAdvanced};
SwitchableSetting skip_cpu_inner_invalidation{linkage,
- true,
+ false,
"skip_cpu_inner_invalidation",
Category::RendererAdvanced,
Specialization::Default,