GS: Fix up SW FMV switch behaviour

This commit is contained in:
refractionpcsx2 2022-05-02 00:22:43 +01:00
parent 8661f42fce
commit 35d3547b62
2 changed files with 9 additions and 5 deletions

View File

@ -433,6 +433,8 @@ void frameLimitReset()
extern uint eecount_on_last_vdec; extern uint eecount_on_last_vdec;
extern bool FMVstarted; extern bool FMVstarted;
extern bool EnableFMV; extern bool EnableFMV;
static bool RendererSwitched = false;
static bool s_last_fmv_state = false; static bool s_last_fmv_state = false;
static __fi void DoFMVSwitch() static __fi void DoFMVSwitch()
@ -477,11 +479,15 @@ static __fi void DoFMVSwitch()
break; break;
} }
if (EmuConfig.Gamefixes.SoftwareRendererFMVHack && GSConfig.UseHardwareRenderer()) if (EmuConfig.Gamefixes.SoftwareRendererFMVHack && (GSConfig.UseHardwareRenderer() || (RendererSwitched && GSConfig.Renderer == GSRendererType::SW)))
{ {
RendererSwitched = GSConfig.UseHardwareRenderer();
// we don't use the sw toggle here, because it'll change back to auto if set to sw // we don't use the sw toggle here, because it'll change back to auto if set to sw
GetMTGS().SwitchRenderer(new_fmv_state ? GSRendererType::SW : GSConfig.Renderer, false); GetMTGS().SwitchRenderer(new_fmv_state ? GSRendererType::SW : EmuConfig.GS.Renderer, false);
} }
else
RendererSwitched = false;
} }
// Convenience function to update UI thread and set patches. // Convenience function to update UI thread and set patches.

View File

@ -653,9 +653,7 @@ void Pcsx2Config::GSOptions::MaskUpscalingHacks()
bool Pcsx2Config::GSOptions::UseHardwareRenderer() const bool Pcsx2Config::GSOptions::UseHardwareRenderer() const
{ {
return (Renderer == GSRendererType::DX11 || Renderer == GSRendererType::DX12 || return (Renderer != GSRendererType::Null && Renderer != GSRendererType::SW);
Renderer == GSRendererType::OGL || Renderer == GSRendererType::VK ||
Renderer == GSRendererType::Metal);
} }
VsyncMode Pcsx2Config::GetEffectiveVsyncMode() const VsyncMode Pcsx2Config::GetEffectiveVsyncMode() const