From 904680f0df7a0325fdb48811ed8117102dfc753c Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Mon, 1 Feb 2021 18:39:15 +1000 Subject: [PATCH] Settings: Make integer and linear upscaling mutually exclusive --- src/core/host_interface.cpp | 6 ++++++ src/duckstation-qt/displaysettingswidget.cpp | 13 ++++++++++--- src/duckstation-qt/displaysettingswidget.h | 1 + src/frontend-common/fullscreen_ui.cpp | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/core/host_interface.cpp b/src/core/host_interface.cpp index ca90c6116..b78d119ae 100644 --- a/src/core/host_interface.cpp +++ b/src/core/host_interface.cpp @@ -633,6 +633,12 @@ void HostInterface::FixIncompatibleSettings(bool display_osd_messages) g_settings.bios_patch_tty_enable = false; } + if (g_settings.display_integer_scaling && g_settings.display_linear_filtering) + { + Log_WarningPrintf("Disabling linear filter due to integer upscaling."); + g_settings.display_linear_filtering = false; + } + if (g_settings.gpu_pgxp_enable) { if (g_settings.gpu_renderer == GPURenderer::Software) diff --git a/src/duckstation-qt/displaysettingswidget.cpp b/src/duckstation-qt/displaysettingswidget.cpp index 50d5d3244..42367d57a 100644 --- a/src/duckstation-qt/displaysettingswidget.cpp +++ b/src/duckstation-qt/displaysettingswidget.cpp @@ -55,7 +55,10 @@ DisplaySettingsWidget::DisplaySettingsWidget(QtHostInterface* host_interface, QW &DisplaySettingsWidget::onGPUAdapterIndexChanged); connect(m_ui.fullscreenMode, QOverload::of(&QComboBox::currentIndexChanged), this, &DisplaySettingsWidget::onGPUFullscreenModeIndexChanged); + connect(m_ui.displayIntegerScaling, &QCheckBox::stateChanged, this, + &DisplaySettingsWidget::onIntegerFilteringChanged); populateGPUAdaptersAndResolutions(); + onIntegerFilteringChanged(); dialog->registerWidgetHelp( m_ui.renderer, tr("Renderer"), @@ -68,9 +71,8 @@ DisplaySettingsWidget::DisplaySettingsWidget(QtHostInterface* host_interface, QW tr("If your system contains multiple GPUs or adapters, you can select which GPU you wish to use for the hardware " "renderers.
This option is only supported in Direct3D and Vulkan. OpenGL will always use the default " "device.")); - dialog->registerWidgetHelp( - m_ui.fullscreenMode, tr("Fullscreen Mode"), tr("Borderless Fullscreen"), - tr("Chooses the fullscreen resolution and frequency.")); + dialog->registerWidgetHelp(m_ui.fullscreenMode, tr("Fullscreen Mode"), tr("Borderless Fullscreen"), + tr("Chooses the fullscreen resolution and frequency.")); dialog->registerWidgetHelp( m_ui.displayAspectRatio, tr("Aspect Ratio"), qApp->translate("DisplayAspectRatio", Settings::GetDisplayAspectRatioName(Settings::DEFAULT_DISPLAY_ASPECT_RATIO)), @@ -267,3 +269,8 @@ void DisplaySettingsWidget::onGPUFullscreenModeIndexChanged() m_host_interface->SetStringSettingValue("GPU", "FullscreenMode", m_ui.fullscreenMode->currentText().toUtf8().constData()); } + +void DisplaySettingsWidget::onIntegerFilteringChanged() +{ + m_ui.displayLinearFiltering->setEnabled(!m_ui.displayIntegerScaling->isChecked()); +} \ No newline at end of file diff --git a/src/duckstation-qt/displaysettingswidget.h b/src/duckstation-qt/displaysettingswidget.h index 5a98f2c88..d582de82a 100644 --- a/src/duckstation-qt/displaysettingswidget.h +++ b/src/duckstation-qt/displaysettingswidget.h @@ -20,6 +20,7 @@ private Q_SLOTS: void populateGPUAdaptersAndResolutions(); void onGPUAdapterIndexChanged(); void onGPUFullscreenModeIndexChanged(); + void onIntegerFilteringChanged(); private: void setupAdditionalUi(); diff --git a/src/frontend-common/fullscreen_ui.cpp b/src/frontend-common/fullscreen_ui.cpp index cff5ef8f2..120b7e61f 100644 --- a/src/frontend-common/fullscreen_ui.cpp +++ b/src/frontend-common/fullscreen_ui.cpp @@ -1631,7 +1631,7 @@ void DrawSettingsWindow() settings_changed |= ToggleButton("Linear Upscaling", "Uses a bilinear filter when upscaling to display, smoothing out the image.", - &s_settings_copy.display_linear_filtering); + &s_settings_copy.display_linear_filtering, !s_settings_copy.display_integer_scaling); settings_changed |= ToggleButton("Integer Upscaling", "Adds padding to ensure pixels are a whole number in size.",