Android: remove async GPU until it is fixed on desktop
This commit is contained in:
parent
3adc278965
commit
5681e91cf7
@ -353,7 +353,6 @@ public final class SettingsFragmentPresenter {
|
|||||||
SettingSection rendererSection = mSettings.getSection(Settings.SECTION_RENDERER);
|
SettingSection rendererSection = mSettings.getSection(Settings.SECTION_RENDERER);
|
||||||
Setting resolutionFactor = rendererSection.getSetting(SettingsFile.KEY_RESOLUTION_FACTOR);
|
Setting resolutionFactor = rendererSection.getSetting(SettingsFile.KEY_RESOLUTION_FACTOR);
|
||||||
Setting filterMode = rendererSection.getSetting(SettingsFile.KEY_FILTER_MODE);
|
Setting filterMode = rendererSection.getSetting(SettingsFile.KEY_FILTER_MODE);
|
||||||
Setting useAsynchronousGpuEmulation = rendererSection.getSetting(SettingsFile.KEY_USE_ASYNCHRONOUS_GPU_EMULATION);
|
|
||||||
Setting shadersAccurateMul = rendererSection.getSetting(SettingsFile.KEY_SHADERS_ACCURATE_MUL);
|
Setting shadersAccurateMul = rendererSection.getSetting(SettingsFile.KEY_SHADERS_ACCURATE_MUL);
|
||||||
Setting render3dMode = rendererSection.getSetting(SettingsFile.KEY_RENDER_3D);
|
Setting render3dMode = rendererSection.getSetting(SettingsFile.KEY_RENDER_3D);
|
||||||
Setting factor3d = rendererSection.getSetting(SettingsFile.KEY_FACTOR_3D);
|
Setting factor3d = rendererSection.getSetting(SettingsFile.KEY_FACTOR_3D);
|
||||||
@ -367,7 +366,6 @@ public final class SettingsFragmentPresenter {
|
|||||||
sl.add(new HeaderSetting(null, null, R.string.renderer, 0));
|
sl.add(new HeaderSetting(null, null, R.string.renderer, 0));
|
||||||
sl.add(new SliderSetting(SettingsFile.KEY_RESOLUTION_FACTOR, Settings.SECTION_RENDERER, R.string.internal_resolution, R.string.internal_resolution_description, 1, 4, "x", 1, resolutionFactor));
|
sl.add(new SliderSetting(SettingsFile.KEY_RESOLUTION_FACTOR, Settings.SECTION_RENDERER, R.string.internal_resolution, R.string.internal_resolution_description, 1, 4, "x", 1, resolutionFactor));
|
||||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_FILTER_MODE, Settings.SECTION_RENDERER, R.string.linear_filtering, R.string.linear_filtering_description, true, filterMode));
|
sl.add(new CheckBoxSetting(SettingsFile.KEY_FILTER_MODE, Settings.SECTION_RENDERER, R.string.linear_filtering, R.string.linear_filtering_description, true, filterMode));
|
||||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_USE_ASYNCHRONOUS_GPU_EMULATION, Settings.SECTION_RENDERER, R.string.asynchronous_gpu, R.string.asynchronous_gpu_description, true, useAsynchronousGpuEmulation));
|
|
||||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_SHADERS_ACCURATE_MUL, Settings.SECTION_RENDERER, R.string.shaders_accurate_mul, R.string.shaders_accurate_mul_description, false, shadersAccurateMul));
|
sl.add(new CheckBoxSetting(SettingsFile.KEY_SHADERS_ACCURATE_MUL, Settings.SECTION_RENDERER, R.string.shaders_accurate_mul, R.string.shaders_accurate_mul_description, false, shadersAccurateMul));
|
||||||
sl.add(new CheckBoxSetting(SettingsFile.KEY_USE_DISK_SHADER_CACHE, Settings.SECTION_RENDERER, R.string.use_disk_shader_cache, R.string.use_disk_shader_cache_description, true, useDiskShaderCache));
|
sl.add(new CheckBoxSetting(SettingsFile.KEY_USE_DISK_SHADER_CACHE, Settings.SECTION_RENDERER, R.string.use_disk_shader_cache, R.string.use_disk_shader_cache_description, true, useDiskShaderCache));
|
||||||
|
|
||||||
|
@ -118,8 +118,6 @@ void Config::ReadValues() {
|
|||||||
Settings::values.use_hw_shader = sdl2_config->GetBoolean("Renderer", "use_hw_shader", true);
|
Settings::values.use_hw_shader = sdl2_config->GetBoolean("Renderer", "use_hw_shader", true);
|
||||||
Settings::values.shaders_accurate_mul =
|
Settings::values.shaders_accurate_mul =
|
||||||
sdl2_config->GetBoolean("Renderer", "shaders_accurate_mul", false);
|
sdl2_config->GetBoolean("Renderer", "shaders_accurate_mul", false);
|
||||||
Settings::values.use_asynchronous_gpu_emulation =
|
|
||||||
sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", true);
|
|
||||||
Settings::values.use_shader_jit = sdl2_config->GetBoolean("Renderer", "use_shader_jit", true);
|
Settings::values.use_shader_jit = sdl2_config->GetBoolean("Renderer", "use_shader_jit", true);
|
||||||
Settings::values.resolution_factor =
|
Settings::values.resolution_factor =
|
||||||
static_cast<u16>(sdl2_config->GetInteger("Renderer", "resolution_factor", 1));
|
static_cast<u16>(sdl2_config->GetInteger("Renderer", "resolution_factor", 1));
|
||||||
|
@ -7,25 +7,7 @@
|
|||||||
namespace GameSettings {
|
namespace GameSettings {
|
||||||
|
|
||||||
void LoadOverrides(u64 program_id) {
|
void LoadOverrides(u64 program_id) {
|
||||||
Settings::values.gpu_timing_mode_submit_list = Settings::GpuTimingMode::Asynch_1ms;
|
|
||||||
Settings::values.gpu_timing_mode_swap_buffers = Settings::GpuTimingMode::Asynch_8ms;
|
|
||||||
Settings::values.gpu_timing_mode_memory_fill = Settings::GpuTimingMode::Asynch_2ms;
|
|
||||||
Settings::values.gpu_timing_mode_display_transfer = Settings::GpuTimingMode::Synch;
|
|
||||||
Settings::values.gpu_timing_mode_flush = Settings::GpuTimingMode::Skip;
|
|
||||||
Settings::values.gpu_timing_mode_flush_and_invalidate = Settings::GpuTimingMode::Asynch;
|
|
||||||
Settings::values.gpu_timing_mode_invalidate = Settings::GpuTimingMode::Synch;
|
|
||||||
|
|
||||||
switch (program_id) {
|
switch (program_id) {
|
||||||
// JAP / Dragon Quest VII: Fragments of the Forgotten Past
|
|
||||||
case 0x0004000000065E00:
|
|
||||||
// USA / Dragon Quest VII: Fragments of the Forgotten Past
|
|
||||||
case 0x000400000018EF00:
|
|
||||||
// EUR / Dragon Quest VII: Fragments of the Forgotten Past
|
|
||||||
case 0x000400000018F000:
|
|
||||||
// This game is currently broken with asynchronous GPU
|
|
||||||
Settings::values.use_asynchronous_gpu_emulation = false;
|
|
||||||
break;
|
|
||||||
|
|
||||||
// JAP / The Legend of Zelda: Ocarina of Time 3D
|
// JAP / The Legend of Zelda: Ocarina of Time 3D
|
||||||
case 0x0004000000033400:
|
case 0x0004000000033400:
|
||||||
// USA / The Legend of Zelda: Ocarina of Time 3D
|
// USA / The Legend of Zelda: Ocarina of Time 3D
|
||||||
@ -38,24 +20,6 @@ void LoadOverrides(u64 program_id) {
|
|||||||
case 0x000400000008F900:
|
case 0x000400000008F900:
|
||||||
// This game requires accurate multiplication to render properly
|
// This game requires accurate multiplication to render properly
|
||||||
Settings::values.shaders_accurate_mul = true;
|
Settings::values.shaders_accurate_mul = true;
|
||||||
Settings::values.gpu_timing_mode_submit_list = Settings::GpuTimingMode::Asynch_1ms;
|
|
||||||
Settings::values.gpu_timing_mode_swap_buffers = Settings::GpuTimingMode::Asynch_4ms;
|
|
||||||
Settings::values.gpu_timing_mode_memory_fill = Settings::GpuTimingMode::Asynch;
|
|
||||||
Settings::values.gpu_timing_mode_display_transfer = Settings::GpuTimingMode::Asynch;
|
|
||||||
Settings::values.gpu_timing_mode_flush = Settings::GpuTimingMode::Skip;
|
|
||||||
Settings::values.gpu_timing_mode_flush_and_invalidate = Settings::GpuTimingMode::Skip;
|
|
||||||
break;
|
|
||||||
|
|
||||||
// JAP / Super Mario 3D Land
|
|
||||||
case 0x0004000000054100:
|
|
||||||
// USA / Super Mario 3D Land
|
|
||||||
case 0x0004000000054000:
|
|
||||||
// EUR / Super Mario 3D Land
|
|
||||||
case 0x0004000000053F00:
|
|
||||||
// KOR / Super Mario 3D Land
|
|
||||||
case 0x0004000000089D00:
|
|
||||||
// This game has very sensitive timings with asynchronous GPU
|
|
||||||
Settings::values.gpu_timing_mode_submit_list = Settings::GpuTimingMode::Synch;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// USA / Mario & Luigi: Superstar Saga + Bowsers Minions
|
// USA / Mario & Luigi: Superstar Saga + Bowsers Minions
|
||||||
|
@ -204,18 +204,8 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) {
|
|||||||
LoadDiskCacheProgress(VideoCore::LoadCallbackStage::Prepare, 0, 0);
|
LoadDiskCacheProgress(VideoCore::LoadCallbackStage::Prepare, 0, 0);
|
||||||
|
|
||||||
std::unique_ptr<Frontend::GraphicsContext> cpu_context;
|
std::unique_ptr<Frontend::GraphicsContext> cpu_context;
|
||||||
if (Settings::values.use_asynchronous_gpu_emulation) {
|
|
||||||
cpu_context = window->CreateSharedContext();
|
|
||||||
cpu_context->MakeCurrent();
|
|
||||||
}
|
|
||||||
|
|
||||||
system.Renderer().Rasterizer()->LoadDiskResources(stop_run, &LoadDiskCacheProgress);
|
system.Renderer().Rasterizer()->LoadDiskResources(stop_run, &LoadDiskCacheProgress);
|
||||||
|
|
||||||
if (Settings::values.use_asynchronous_gpu_emulation) {
|
|
||||||
cpu_context->DoneCurrent();
|
|
||||||
cpu_context.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
LoadDiskCacheProgress(VideoCore::LoadCallbackStage::Complete, 0, 0);
|
LoadDiskCacheProgress(VideoCore::LoadCallbackStage::Complete, 0, 0);
|
||||||
|
|
||||||
SCOPE_EXIT({ TryShutdown(); });
|
SCOPE_EXIT({ TryShutdown(); });
|
||||||
|
Loading…
Reference in New Issue
Block a user