GPU: Update CRTC configuration on line offset change

Fixes offsets not applying immediately in interlaced modes that do not
flip buffers.
This commit is contained in:
Stenzek
2025-11-30 12:57:37 +10:00
parent 65e890f7f4
commit b723a8852d
2 changed files with 9 additions and 2 deletions

View File

@@ -104,7 +104,11 @@ void GPU::UpdateSettings(const Settings& old_settings)
m_console_is_pal = System::IsPALRegion();
UpdateCRTCConfig();
}
else if (g_settings.display_crop_mode != old_settings.display_crop_mode)
else if (g_settings.display_crop_mode != old_settings.display_crop_mode ||
g_settings.display_active_start_offset != old_settings.display_active_start_offset ||
g_settings.display_active_end_offset != old_settings.display_active_end_offset ||
g_settings.display_line_start_offset != old_settings.display_line_start_offset ||
g_settings.display_line_end_offset != old_settings.display_line_end_offset)
{
// Crop mode calls this, so recalculate the display area
UpdateCRTCDisplayParameters();

View File

@@ -4538,7 +4538,10 @@ void System::CheckForSettingsChanges(const Settings& old_settings)
g_settings.gpu_max_run_ahead != old_settings.gpu_max_run_ahead ||
g_settings.gpu_force_video_timing != old_settings.gpu_force_video_timing ||
g_settings.display_crop_mode != old_settings.display_crop_mode ||
g_settings.display_aspect_ratio != old_settings.display_aspect_ratio)
g_settings.display_active_start_offset != old_settings.display_active_start_offset ||
g_settings.display_active_end_offset != old_settings.display_active_end_offset ||
g_settings.display_line_start_offset != old_settings.display_line_start_offset ||
g_settings.display_line_end_offset != old_settings.display_line_end_offset)
{
g_gpu.UpdateSettings(old_settings);
}