mirror of
https://github.com/stenzek/duckstation.git
synced 2025-06-07 12:05:52 +00:00
GPU/HW: Fix crash when changing downsampling factor
This commit is contained in:
parent
19c03aff4d
commit
5c41a48e39
@ -475,7 +475,7 @@ bool GPU_HW::UpdateSettings(const GPUSettings& old_settings, Error* error)
|
||||
const bool downsampling_shaders_changed =
|
||||
((m_resolution_scale > 1) != (resolution_scale > 1) ||
|
||||
(resolution_scale > 1 && (g_gpu_settings.gpu_downsample_mode != old_settings.gpu_downsample_mode ||
|
||||
(m_downsample_mode == GPUDownsampleMode::Box &&
|
||||
(g_gpu_settings.gpu_downsample_mode == GPUDownsampleMode::Box &&
|
||||
(resolution_scale != m_resolution_scale ||
|
||||
g_gpu_settings.gpu_downsample_scale != old_settings.gpu_downsample_scale)))));
|
||||
|
||||
@ -706,7 +706,19 @@ void GPU_HW::CheckSettings()
|
||||
{
|
||||
const u32 resolution_scale = CalculateResolutionScale();
|
||||
const u32 box_downscale = GetBoxDownsampleScale(resolution_scale);
|
||||
if (box_downscale != g_gpu_settings.gpu_downsample_scale || box_downscale == resolution_scale)
|
||||
if (box_downscale == resolution_scale)
|
||||
{
|
||||
m_downsample_mode = GPUDownsampleMode::Disabled;
|
||||
|
||||
Host::AddIconOSDMessage(
|
||||
"BoxDownsampleUnsupported", ICON_FA_PAINT_BRUSH,
|
||||
fmt::format(
|
||||
TRANSLATE_FS("GPU_HW",
|
||||
"Resolution scale {0}x is not divisible by downsample scale {1}x, downsampling disabled."),
|
||||
resolution_scale, g_gpu_settings.gpu_downsample_scale),
|
||||
Host::OSD_WARNING_DURATION);
|
||||
}
|
||||
else if (box_downscale != g_gpu_settings.gpu_downsample_scale)
|
||||
{
|
||||
Host::AddIconOSDMessage(
|
||||
"BoxDownsampleUnsupported", ICON_FA_PAINT_BRUSH,
|
||||
@ -719,9 +731,6 @@ void GPU_HW::CheckSettings()
|
||||
{
|
||||
Host::RemoveKeyedOSDMessage("BoxDownsampleUnsupported");
|
||||
}
|
||||
|
||||
if (box_downscale == g_gpu_settings.gpu_resolution_scale)
|
||||
m_downsample_mode = GPUDownsampleMode::Disabled;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1791,6 +1800,9 @@ bool GPU_HW::CompileDownsamplePipelines(Error* error)
|
||||
m_downsample_lod_sampler.reset();
|
||||
m_downsample_composite_sampler.reset();
|
||||
|
||||
if (m_downsample_mode == GPUDownsampleMode::Disabled)
|
||||
return true;
|
||||
|
||||
const GPU_HW_ShaderGen shadergen(g_gpu_device->GetRenderAPI(), m_supports_dual_source_blend,
|
||||
m_supports_framebuffer_fetch);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user