summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorLC <mathew1800@gmail.com>2021-03-28 09:29:08 -0400
committerGitHub <noreply@github.com>2021-03-28 09:29:08 -0400
commit7a16231e98687457afedaa2b848e95e020a148c7 (patch)
treeb6a01d3ccea975de4fa485021554787166623d2c /Source/Android/app/src/main/java
parent18e7009db2f8e6173f68d3c64253d8fdfcc59058 (diff)
parented5e61a250c4e41636d578f56ff6a0a5fc164003 (diff)
Merge pull request #9614 from JosJuice/okay-fine-i-give-in
Android: Add "Synchronize GPU Thread" setting (SyncOnSkipIdle/SyncGPU)
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java68
2 files changed, 70 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
index d4bb8accce..4d26c39aa8 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
@@ -11,6 +11,7 @@ public enum BooleanSetting implements AbstractBooleanSetting
MAIN_DSP_HLE(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "DSPHLE", true),
MAIN_FASTMEM(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "Fastmem", true),
MAIN_CPU_THREAD(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "CPUThread", true),
+ MAIN_SYNC_ON_SKIP_IDLE(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SyncOnSkipIdle", true),
MAIN_OVERRIDE_REGION_SETTINGS(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE,
"OverrideRegionSettings", false),
MAIN_AUDIO_STRETCH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AudioStretch", false),
@@ -19,6 +20,7 @@ public enum BooleanSetting implements AbstractBooleanSetting
"WiimoteContinuousScanning", false),
MAIN_WIIMOTE_ENABLE_SPEAKER(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE,
"WiimoteEnableSpeaker", false),
+ MAIN_SYNC_GPU(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SyncGPU", false),
MAIN_OVERCLOCK_ENABLE(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "OverclockEnable", false),
MAIN_AUTO_DISC_CHANGE(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AutoDiscChange", false),
MAIN_ALLOW_SD_WRITES(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "WiiSDCardAllowWrites",
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 3ff8e963c3..bbfccfd2e8 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
@@ -434,6 +434,71 @@ public final class SettingsFragmentPresenter
private void addAdvancedSettings(ArrayList<SettingsItem> sl)
{
+ final int SYNC_GPU_NEVER = 0;
+ final int SYNC_GPU_ON_IDLE_SKIP = 1;
+ final int SYNC_GPU_ALWAYS = 2;
+
+ AbstractIntSetting synchronizeGpuThread = new AbstractIntSetting()
+ {
+ @Override
+ public int getInt(Settings settings)
+ {
+ if (BooleanSetting.MAIN_SYNC_GPU.getBoolean(settings))
+ {
+ return SYNC_GPU_ALWAYS;
+ }
+ else
+ {
+ boolean syncOnSkipIdle = BooleanSetting.MAIN_SYNC_ON_SKIP_IDLE.getBoolean(settings);
+ return syncOnSkipIdle ? SYNC_GPU_ON_IDLE_SKIP : SYNC_GPU_NEVER;
+ }
+ }
+
+ @Override
+ public void setInt(Settings settings, int newValue)
+ {
+ switch (newValue)
+ {
+ case SYNC_GPU_NEVER:
+ BooleanSetting.MAIN_SYNC_ON_SKIP_IDLE.setBoolean(settings, false);
+ BooleanSetting.MAIN_SYNC_GPU.setBoolean(settings, false);
+ break;
+
+ case SYNC_GPU_ON_IDLE_SKIP:
+ BooleanSetting.MAIN_SYNC_ON_SKIP_IDLE.setBoolean(settings, true);
+ BooleanSetting.MAIN_SYNC_GPU.setBoolean(settings, false);
+ break;
+
+ case SYNC_GPU_ALWAYS:
+ BooleanSetting.MAIN_SYNC_ON_SKIP_IDLE.setBoolean(settings, true);
+ BooleanSetting.MAIN_SYNC_GPU.setBoolean(settings, true);
+ break;
+ }
+ }
+
+ @Override
+ public boolean isOverridden(Settings settings)
+ {
+ return BooleanSetting.MAIN_SYNC_ON_SKIP_IDLE.isOverridden(settings) ||
+ BooleanSetting.MAIN_SYNC_GPU.isOverridden(settings);
+ }
+
+ @Override
+ public boolean isRuntimeEditable()
+ {
+ return BooleanSetting.MAIN_SYNC_ON_SKIP_IDLE.isRuntimeEditable() &&
+ BooleanSetting.MAIN_SYNC_GPU.isRuntimeEditable();
+ }
+
+ @Override
+ public boolean delete(Settings settings)
+ {
+ // Not short circuiting
+ return BooleanSetting.MAIN_SYNC_ON_SKIP_IDLE.delete(settings) &
+ BooleanSetting.MAIN_SYNC_GPU.delete(settings);
+ }
+ };
+
// TODO: Having different emuCoresEntries/emuCoresValues for each architecture is annoying.
// The proper solution would be to have one set of entries and one set of values
// and exclude the values that aren't present in PowerPC::AvailableCPUCores().
@@ -461,6 +526,9 @@ public final class SettingsFragmentPresenter
R.string.overclock_enable_description));
sl.add(new PercentSliderSetting(FloatSetting.MAIN_OVERCLOCK, R.string.overclock_title,
R.string.overclock_title_description, 0, 400, "%"));
+ sl.add(new SingleChoiceSetting(synchronizeGpuThread, R.string.synchronize_gpu_thread,
+ R.string.synchronize_gpu_thread_description, R.array.synchronizeGpuThreadEntries,
+ R.array.synchronizeGpuThreadValues));
}
private void addGcPadSettings(ArrayList<SettingsItem> sl)