diff --git a/src/duckstation-qt/graphicssettingswidget.cpp b/src/duckstation-qt/graphicssettingswidget.cpp
index 34c51979d..fa14571bc 100644
--- a/src/duckstation-qt/graphicssettingswidget.cpp
+++ b/src/duckstation-qt/graphicssettingswidget.cpp
@@ -836,6 +836,12 @@ void GraphicsSettingsWidget::populateAndConnectUpscalingModes(int max_scale)
"ResolutionScale", 1);
connect(m_ui.resolutionScale, &QComboBox::currentIndexChanged, this,
&GraphicsSettingsWidget::updateResolutionDependentOptions);
+
+ m_ui.resolutionScaleWarningIcon->setPixmap(
+ QIcon(QtHost::GetResourceQPath("images/warning.svg", true)).pixmap(16, 16));
+ m_ui.resolutionScaleWarningIcon->setToolTip(
+ tr("PGXP is not enabled. Increasing the resolution without enabling PGXP will result in visible polygon "
+ "glitches."));
}
void GraphicsSettingsWidget::populateUpscalingModes(QComboBox* const cb, int max_scale)
@@ -1002,18 +1008,22 @@ void GraphicsSettingsWidget::updatePGXPSettingsEnabled()
m_ui.pgxpDisableOn2DPolygons->setEnabled(enabled &&
!m_dialog->hasGameTrait(GameDatabase::Trait::DisablePGXPOn2DPolygons));
m_ui.pgxpTransparentDepthTest->setEnabled(depth_enabled);
+ updateResolutionDependentOptions();
}
void GraphicsSettingsWidget::updateResolutionDependentOptions()
{
const bool is_hardware = (getEffectiveRenderer() != GPURenderer::Software);
const int scale = m_dialog->getEffectiveIntValue("GPU", "ResolutionScale", 1);
+ const bool pgxp_enabled = (is_hardware && m_dialog->getEffectiveBoolValue("GPU", "PGXPEnable", false) &&
+ !m_dialog->hasGameTrait(GameDatabase::Trait::DisablePGXP));
const GPUTextureFilter texture_filtering =
Settings::ParseTextureFilterName(m_dialog->getEffectiveStringValue("GPU", "TextureFilter").c_str())
.value_or(Settings::DEFAULT_GPU_TEXTURE_FILTER);
m_ui.forceRoundedTexcoords->setEnabled(
is_hardware && scale != 1 && texture_filtering == GPUTextureFilter::Nearest &&
!m_dialog->hasGameTrait(GameDatabase::Trait::ForceRoundUpscaledTextureCoordinates));
+ m_ui.resolutionScaleWarningIcon->setVisible(scale != 1 && !pgxp_enabled);
}
void GraphicsSettingsWidget::warnAboutRendererChange()
diff --git a/src/duckstation-qt/graphicssettingswidget.ui b/src/duckstation-qt/graphicssettingswidget.ui
index 0630e6fb5..009cefcb6 100644
--- a/src/duckstation-qt/graphicssettingswidget.ui
+++ b/src/duckstation-qt/graphicssettingswidget.ui
@@ -84,11 +84,49 @@
-
-
-
- Internal Resolution:
+
+
+ 4
-
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Internal Resolution:
+
+
+
+ -
+
+
+
+ 16
+ 16
+
+
+
+
+ 16
+ 16
+
+
+
+ false
+
+
+
+
-
diff --git a/src/duckstation-qt/setupwizarddialog.cpp b/src/duckstation-qt/setupwizarddialog.cpp
index ac9d892d3..84cfc3976 100644
--- a/src/duckstation-qt/setupwizarddialog.cpp
+++ b/src/duckstation-qt/setupwizarddialog.cpp
@@ -509,10 +509,21 @@ void SetupWizardDialog::doMultipleDeviceAutomaticBinding(u32 port, QLabel* updat
void SetupWizardDialog::setupGraphicsPage(bool initial)
{
+ if (initial)
+ {
+ m_ui.resolutionScaleWarningIcon->setPixmap(
+ QIcon(QtHost::GetResourceQPath("images/warning.svg", true)).pixmap(16, 16));
+ }
+ m_ui.resolutionScaleWarningIcon->setToolTip(
+ tr("PGXP is not enabled. Increasing the resolution without enabling PGXP will result in visible polygon "
+ "glitches."));
+
SettingWidgetBinder::DisconnectWidget(m_ui.resolutionScale);
m_ui.resolutionScale->clear();
GraphicsSettingsWidget::populateUpscalingModes(m_ui.resolutionScale);
SettingWidgetBinder::BindWidgetToIntSetting(nullptr, m_ui.resolutionScale, "GPU", "ResolutionScale", 1);
+ connect(m_ui.resolutionScale, &QComboBox::currentIndexChanged, this,
+ &SetupWizardDialog::updateResolutionScaleWarning);
SettingWidgetBinder::DisconnectWidget(m_ui.textureFiltering);
m_ui.textureFiltering->clear();
@@ -570,7 +581,16 @@ void SetupWizardDialog::setupGraphicsPage(bool initial)
{
SettingWidgetBinder::BindWidgetToBoolSetting(nullptr, m_ui.pgxpEnable, "GPU", "PGXPEnable", false);
SettingWidgetBinder::BindWidgetToBoolSetting(nullptr, m_ui.widescreenHack, "GPU", "WidescreenHack", false);
+ connect(m_ui.pgxpEnable, &QCheckBox::checkStateChanged, this, &SetupWizardDialog::updateResolutionScaleWarning);
}
+
+ updateResolutionScaleWarning();
+}
+
+void SetupWizardDialog::updateResolutionScaleWarning()
+{
+ m_ui.resolutionScaleWarningIcon->setVisible(m_ui.resolutionScale->currentData().toInt() != 1 &&
+ !m_ui.pgxpEnable->isChecked());
}
void SetupWizardDialog::setupAchievementsPage(bool initial)
diff --git a/src/duckstation-qt/setupwizarddialog.h b/src/duckstation-qt/setupwizarddialog.h
index 52a4191c0..52ea1de3e 100644
--- a/src/duckstation-qt/setupwizarddialog.h
+++ b/src/duckstation-qt/setupwizarddialog.h
@@ -41,6 +41,7 @@ private:
void setupGameListPage();
void setupControllerPage(bool initial);
void setupGraphicsPage(bool initial);
+ void updateResolutionScaleWarning();
void setupAchievementsPage(bool initial);
void setupInterfacePage();
void setupGameListViewPage();
diff --git a/src/duckstation-qt/setupwizarddialog.ui b/src/duckstation-qt/setupwizarddialog.ui
index 5b0b4ef5a..8e9afe610 100644
--- a/src/duckstation-qt/setupwizarddialog.ui
+++ b/src/duckstation-qt/setupwizarddialog.ui
@@ -846,11 +846,49 @@
10
-
-
-
- Internal Resolution:
+
+
+ 4
-
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Internal Resolution:
+
+
+
+ -
+
+
+
+ 16
+ 16
+
+
+
+
+ 16
+ 16
+
+
+
+ false
+
+
+
+
-