diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index b8e74f6c21..5aab54c95d 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -452,6 +452,7 @@ public final class SettingsFragmentPresenter
enhancementSection.getSetting(SettingsFile.KEY_ARBITRARY_MIPMAP_DETECTION);
Setting wideScreenHack = gfxSection.getSetting(SettingsFile.KEY_WIDE_SCREEN_HACK);
Setting force24BitColor = enhancementSection.getSetting(SettingsFile.KEY_FORCE_24_BIT_COLOR);
+ Setting backendMultithreading = gfxSection.getSetting(SettingsFile.KEY_BACKEND_MULTITHREADING);
sl.add(new SingleChoiceSetting(SettingsFile.KEY_INTERNAL_RES, Settings.SECTION_GFX_SETTINGS,
R.string.internal_resolution, R.string.internal_resolution_description,
@@ -501,6 +502,10 @@ public final class SettingsFragmentPresenter
sl.add(new CheckBoxSetting(SettingsFile.KEY_WIDE_SCREEN_HACK, Settings.SECTION_GFX_SETTINGS,
R.string.wide_screen_hack, R.string.wide_screen_hack_description, false,
wideScreenHack));
+ sl.add(new CheckBoxSetting(SettingsFile.KEY_BACKEND_MULTITHREADING,
+ Settings.SECTION_GFX_SETTINGS,
+ R.string.backend_multithreading, R.string.backend_multithreading_description, false,
+ backendMultithreading));
/*
Check if we support stereo
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
index df51a38e04..fd4734cd89 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
@@ -72,6 +72,7 @@ public final class SettingsFile
public static final String KEY_ARBITRARY_MIPMAP_DETECTION = "ArbitraryMipmapDetection";
public static final String KEY_WIDE_SCREEN_HACK = "wideScreenHack";
public static final String KEY_FORCE_24_BIT_COLOR = "ForceTrueColor";
+ public static final String KEY_BACKEND_MULTITHREADING = "BackendMultithreading";
public static final String KEY_STEREO_MODE = "StereoMode";
public static final String KEY_STEREO_DEPTH = "StereoDepth";
diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml
index 0e13855779..6ec508dab5 100644
--- a/Source/Android/app/src/main/res/values/strings.xml
+++ b/Source/Android/app/src/main/res/values/strings.xml
@@ -199,6 +199,8 @@
Control the distance of the convergence plane, this is the distance at which objects will appear to be in front of the screen.\nA higher value creates stronger out-of-screen effects while a lower value is more comfortable.
Swap Eyes
Swap the left and right eye, mostly useful if you want to view side-by-side cross-eyed.
+ Backend Multithreading
+ Enables CPU multithreading(Vulkan only). May affect performance. If unsure, leave unchecked
Hacks
Embedded Frame Buffer
diff --git a/Source/Core/Core/Config/GraphicsSettings.cpp b/Source/Core/Core/Config/GraphicsSettings.cpp
index 61904b8a70..a59b646618 100644
--- a/Source/Core/Core/Config/GraphicsSettings.cpp
+++ b/Source/Core/Core/Config/GraphicsSettings.cpp
@@ -71,8 +71,15 @@ const ConfigInfo GFX_BORDERLESS_FULLSCREEN{{System::GFX, "Settings", "Bord
false};
const ConfigInfo GFX_ENABLE_VALIDATION_LAYER{
{System::GFX, "Settings", "EnableValidationLayer"}, false};
+
+#if defined(ANDROID)
+const ConfigInfo GFX_BACKEND_MULTITHREADING{
+ {System::GFX, "Settings", "BackendMultithreading"}, false};
+#else
const ConfigInfo GFX_BACKEND_MULTITHREADING{
{System::GFX, "Settings", "BackendMultithreading"}, true};
+#endif
+
const ConfigInfo GFX_COMMAND_BUFFER_EXECUTE_INTERVAL{
{System::GFX, "Settings", "CommandBufferExecuteInterval"}, 100};
const ConfigInfo GFX_SHADER_CACHE{{System::GFX, "Settings", "ShaderCache"}, true};
diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp
index 6520cbe7bc..b7b8b3203f 100644
--- a/Source/Core/VideoCommon/VideoConfig.cpp
+++ b/Source/Core/VideoCommon/VideoConfig.cpp
@@ -49,7 +49,12 @@ VideoConfig::VideoConfig()
backend_info.bSupportsBPTCTextures = false;
bEnableValidationLayer = false;
+
+#if defined(ANDROID)
+ bBackendMultithreading = false;
+#else
bBackendMultithreading = true;
+#endif
}
void VideoConfig::Refresh()