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 + + + +