mirror of https://github.com/PCSX2/pcsx2.git
GS: Disable interlace skipping on FMVs on SW FMV switch
This commit is contained in:
parent
bb7e08cdce
commit
06e80f0c31
|
@ -652,7 +652,7 @@ void EmuThread::switchRenderer(GSRendererType renderer)
|
|||
if (!VMManager::HasValidVM())
|
||||
return;
|
||||
|
||||
MTGS::SwitchRenderer(renderer);
|
||||
MTGS::SwitchRenderer(renderer, EmuConfig.GS.InterlaceMode);
|
||||
}
|
||||
|
||||
void EmuThread::changeDisc(CDVD_SourceType source, const QString& path)
|
||||
|
|
|
@ -477,9 +477,9 @@ static __fi void DoFMVSwitch()
|
|||
if (EmuConfig.Gamefixes.SoftwareRendererFMVHack && (GSConfig.UseHardwareRenderer() || (RendererSwitched && GSConfig.Renderer == GSRendererType::SW)))
|
||||
{
|
||||
RendererSwitched = GSConfig.UseHardwareRenderer();
|
||||
|
||||
DevCon.Warning("FMV Switch");
|
||||
// we don't use the sw toggle here, because it'll change back to auto if set to sw
|
||||
MTGS::SwitchRenderer(new_fmv_state ? GSRendererType::SW : EmuConfig.GS.Renderer, false);
|
||||
MTGS::SwitchRenderer(new_fmv_state ? GSRendererType::SW : EmuConfig.GS.Renderer, new_fmv_state ? GSInterlaceMode::AdaptiveTFF : EmuConfig.GS.InterlaceMode, false);
|
||||
}
|
||||
else
|
||||
RendererSwitched = false;
|
||||
|
|
|
@ -780,7 +780,7 @@ void GSUpdateConfig(const Pcsx2Config::GSOptions& new_config)
|
|||
}
|
||||
}
|
||||
|
||||
void GSSwitchRenderer(GSRendererType new_renderer)
|
||||
void GSSwitchRenderer(GSRendererType new_renderer, GSInterlaceMode new_interlace)
|
||||
{
|
||||
if (new_renderer == GSRendererType::Auto)
|
||||
new_renderer = GSUtil::GetPreferredRenderer();
|
||||
|
@ -791,6 +791,8 @@ void GSSwitchRenderer(GSRendererType new_renderer)
|
|||
const bool is_software_switch = (new_renderer == GSRendererType::SW || GSConfig.Renderer == GSRendererType::SW);
|
||||
const Pcsx2Config::GSOptions old_config(GSConfig);
|
||||
GSConfig.Renderer = new_renderer;
|
||||
GSConfig.InterlaceMode = new_interlace;
|
||||
|
||||
if (!GSreopen(!is_software_switch, true, old_config))
|
||||
pxFailRel("Failed to reopen GS for renderer switch.");
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ void GSgetTitleStats(std::string& info);
|
|||
void GSTranslateWindowToDisplayCoordinates(float window_x, float window_y, float* display_x, float* display_y);
|
||||
|
||||
void GSUpdateConfig(const Pcsx2Config::GSOptions& new_config);
|
||||
void GSSwitchRenderer(GSRendererType new_renderer);
|
||||
void GSSwitchRenderer(GSRendererType new_renderer, GSInterlaceMode new_interlace);
|
||||
bool GSSaveSnapshotToMemory(u32 window_width, u32 window_height, bool apply_aspect, bool crop_borders,
|
||||
u32* width, u32* height, std::vector<u32>* pixels);
|
||||
void GSJoinSnapshotThreads();
|
||||
|
|
|
@ -75,7 +75,6 @@ public:
|
|||
void QueueSnapshot(const std::string& path, u32 gsdump_frames);
|
||||
void StopGSDump();
|
||||
void PresentCurrentFrame();
|
||||
|
||||
bool BeginCapture(std::string filename, const GSVector2i& size = GSVector2i(0, 0));
|
||||
void EndCapture();
|
||||
};
|
||||
|
|
|
@ -990,7 +990,7 @@ void MTGS::UpdateVSyncMode()
|
|||
SetVSyncMode(Host::GetEffectiveVSyncMode());
|
||||
}
|
||||
|
||||
void MTGS::SwitchRenderer(GSRendererType renderer, bool display_message /* = true */)
|
||||
void MTGS::SwitchRenderer(GSRendererType renderer, GSInterlaceMode interlace, bool display_message /* = true */)
|
||||
{
|
||||
pxAssertRel(IsOpen(), "MTGS is running");
|
||||
|
||||
|
@ -1000,8 +1000,8 @@ void MTGS::SwitchRenderer(GSRendererType renderer, bool display_message /* = tru
|
|||
Pcsx2Config::GSOptions::GetRendererName(renderer)), Host::OSD_INFO_DURATION);
|
||||
}
|
||||
|
||||
RunOnGSThread([renderer]() {
|
||||
GSSwitchRenderer(renderer);
|
||||
RunOnGSThread([renderer, interlace]() {
|
||||
GSSwitchRenderer(renderer, interlace);
|
||||
});
|
||||
|
||||
// See note in ApplySettings() for reasoning here.
|
||||
|
@ -1018,7 +1018,7 @@ void MTGS::SetSoftwareRendering(bool software, bool display_message /* = true */
|
|||
else
|
||||
new_renderer = GSRendererType::SW;
|
||||
|
||||
SwitchRenderer(new_renderer, display_message);
|
||||
SwitchRenderer(new_renderer, EmuConfig.GS.InterlaceMode, display_message);
|
||||
}
|
||||
|
||||
void MTGS::ToggleSoftwareRendering()
|
||||
|
|
|
@ -84,7 +84,7 @@ namespace MTGS
|
|||
void UpdateDisplayWindow();
|
||||
void SetVSyncMode(VsyncMode mode);
|
||||
void UpdateVSyncMode();
|
||||
void SwitchRenderer(GSRendererType renderer, bool display_message = true);
|
||||
void SwitchRenderer(GSRendererType renderer, GSInterlaceMode interlace, bool display_message = true);
|
||||
void SetSoftwareRendering(bool software, bool display_message = true);
|
||||
void ToggleSoftwareRendering();
|
||||
bool SaveMemorySnapshot(u32 window_width, u32 window_height, bool apply_aspect, bool crop_borders,
|
||||
|
|
Loading…
Reference in New Issue