diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/settings.h | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.cpp | 1 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.ui | 2 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 56 | ||||
| -rw-r--r-- | src/yuzu/main.h | 2 |
5 files changed, 61 insertions, 1 deletions
diff --git a/src/common/settings.h b/src/common/settings.h index 830030efd..e926a3268 100644 --- a/src/common/settings.h +++ b/src/common/settings.h | |||
| @@ -70,6 +70,7 @@ enum class ScalingFilter : u32 { | |||
| 70 | Gaussian = 3, | 70 | Gaussian = 3, |
| 71 | ScaleForce = 4, | 71 | ScaleForce = 4, |
| 72 | Fsr = 5, | 72 | Fsr = 5, |
| 73 | LastFilter = Fsr, | ||
| 73 | }; | 74 | }; |
| 74 | 75 | ||
| 75 | struct ResolutionScalingInfo { | 76 | struct ResolutionScalingInfo { |
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 6132b3c49..227697c4f 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #include "video_core/host_shaders/opengl_present_frag.h" | 24 | #include "video_core/host_shaders/opengl_present_frag.h" |
| 25 | #include "video_core/host_shaders/opengl_present_vert.h" | 25 | #include "video_core/host_shaders/opengl_present_vert.h" |
| 26 | #include "video_core/host_shaders/present_bicubic_frag.h" | 26 | #include "video_core/host_shaders/present_bicubic_frag.h" |
| 27 | #include "video_core/host_shaders/present_gaussian_frag.h" | ||
| 27 | #include "video_core/host_shaders/present_scaleforce_frag.h" | 28 | #include "video_core/host_shaders/present_scaleforce_frag.h" |
| 28 | #include "video_core/renderer_opengl/gl_rasterizer.h" | 29 | #include "video_core/renderer_opengl/gl_rasterizer.h" |
| 29 | #include "video_core/renderer_opengl/gl_shader_manager.h" | 30 | #include "video_core/renderer_opengl/gl_shader_manager.h" |
diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index 848ee2d08..7cfb2860d 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui | |||
| @@ -429,7 +429,7 @@ | |||
| 429 | </item> | 429 | </item> |
| 430 | <item> | 430 | <item> |
| 431 | <property name="text"> | 431 | <property name="text"> |
| 432 | <string>FidelityFX Super Resolution [Vulkan Only]</string> | 432 | <string>AMD's FidelityFX™️ Super Resolution [Vulkan Only]</string> |
| 433 | </property> | 433 | </property> |
| 434 | </item> | 434 | </item> |
| 435 | </widget> | 435 | </widget> |
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 3cb146982..379bd0b17 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp | |||
| @@ -774,6 +774,34 @@ void GMainWindow::InitializeWidgets() { | |||
| 774 | tas_label->setFocusPolicy(Qt::NoFocus); | 774 | tas_label->setFocusPolicy(Qt::NoFocus); |
| 775 | statusBar()->insertPermanentWidget(0, tas_label); | 775 | statusBar()->insertPermanentWidget(0, tas_label); |
| 776 | 776 | ||
| 777 | // Setup Filter button | ||
| 778 | filter_status_button = new QPushButton(); | ||
| 779 | filter_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton")); | ||
| 780 | filter_status_button->setFocusPolicy(Qt::NoFocus); | ||
| 781 | connect(filter_status_button, &QPushButton::clicked, [&] { | ||
| 782 | auto filter = Settings::values.scaling_filter.GetValue(); | ||
| 783 | if (filter == Settings::ScalingFilter::LastFilter) { | ||
| 784 | filter = Settings::ScalingFilter::NearestNeighbor; | ||
| 785 | } else { | ||
| 786 | filter = static_cast<Settings::ScalingFilter>(static_cast<u32>(filter) + 1); | ||
| 787 | } | ||
| 788 | if (Settings::values.renderer_backend.GetValue() == Settings::RendererBackend::OpenGL && | ||
| 789 | filter == Settings::ScalingFilter::Fsr) { | ||
| 790 | filter = Settings::ScalingFilter::NearestNeighbor; | ||
| 791 | } | ||
| 792 | Settings::values.scaling_filter.SetValue(filter); | ||
| 793 | filter_status_button->setChecked(true); | ||
| 794 | UpdateFilterText(); | ||
| 795 | }); | ||
| 796 | auto filter = Settings::values.scaling_filter.GetValue(); | ||
| 797 | if (Settings::values.renderer_backend.GetValue() == Settings::RendererBackend::OpenGL && | ||
| 798 | filter == Settings::ScalingFilter::Fsr) { | ||
| 799 | Settings::values.scaling_filter.SetValue(Settings::ScalingFilter::NearestNeighbor); | ||
| 800 | } | ||
| 801 | UpdateFilterText(); | ||
| 802 | filter_status_button->setCheckable(true); | ||
| 803 | statusBar()->insertPermanentWidget(0, filter_status_button); | ||
| 804 | |||
| 777 | // Setup Dock button | 805 | // Setup Dock button |
| 778 | dock_status_button = new QPushButton(); | 806 | dock_status_button = new QPushButton(); |
| 779 | dock_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton")); | 807 | dock_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton")); |
| @@ -3033,11 +3061,39 @@ void GMainWindow::UpdateGPUAccuracyButton() { | |||
| 3033 | } | 3061 | } |
| 3034 | } | 3062 | } |
| 3035 | 3063 | ||
| 3064 | void GMainWindow::UpdateFilterText() { | ||
| 3065 | const auto filter = Settings::values.scaling_filter.GetValue(); | ||
| 3066 | switch (filter) { | ||
| 3067 | case Settings::ScalingFilter::NearestNeighbor: | ||
| 3068 | filter_status_button->setText(tr("NEAREST")); | ||
| 3069 | break; | ||
| 3070 | case Settings::ScalingFilter::Bilinear: | ||
| 3071 | filter_status_button->setText(tr("BILINEAR")); | ||
| 3072 | break; | ||
| 3073 | case Settings::ScalingFilter::Bicubic: | ||
| 3074 | filter_status_button->setText(tr("BICUBIC")); | ||
| 3075 | break; | ||
| 3076 | case Settings::ScalingFilter::Gaussian: | ||
| 3077 | filter_status_button->setText(tr("GAUSSIAN")); | ||
| 3078 | break; | ||
| 3079 | case Settings::ScalingFilter::ScaleForce: | ||
| 3080 | filter_status_button->setText(tr("SCALEFORCE")); | ||
| 3081 | break; | ||
| 3082 | case Settings::ScalingFilter::Fsr: | ||
| 3083 | filter_status_button->setText(tr("AMD'S FIDELITYFX SR")); | ||
| 3084 | break; | ||
| 3085 | default: | ||
| 3086 | filter_status_button->setText(tr("BILINEAR")); | ||
| 3087 | break; | ||
| 3088 | } | ||
| 3089 | } | ||
| 3090 | |||
| 3036 | void GMainWindow::UpdateStatusButtons() { | 3091 | void GMainWindow::UpdateStatusButtons() { |
| 3037 | dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue()); | 3092 | dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue()); |
| 3038 | renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() == | 3093 | renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() == |
| 3039 | Settings::RendererBackend::Vulkan); | 3094 | Settings::RendererBackend::Vulkan); |
| 3040 | UpdateGPUAccuracyButton(); | 3095 | UpdateGPUAccuracyButton(); |
| 3096 | UpdateFilterText(); | ||
| 3041 | } | 3097 | } |
| 3042 | 3098 | ||
| 3043 | void GMainWindow::UpdateUISettings() { | 3099 | void GMainWindow::UpdateUISettings() { |
diff --git a/src/yuzu/main.h b/src/yuzu/main.h index beb4f2984..d4d2f3d58 100644 --- a/src/yuzu/main.h +++ b/src/yuzu/main.h | |||
| @@ -302,6 +302,7 @@ private: | |||
| 302 | void MigrateConfigFiles(); | 302 | void MigrateConfigFiles(); |
| 303 | void UpdateWindowTitle(std::string_view title_name = {}, std::string_view title_version = {}, | 303 | void UpdateWindowTitle(std::string_view title_name = {}, std::string_view title_version = {}, |
| 304 | std::string_view gpu_vendor = {}); | 304 | std::string_view gpu_vendor = {}); |
| 305 | void UpdateFilterText(); | ||
| 305 | void UpdateStatusBar(); | 306 | void UpdateStatusBar(); |
| 306 | void UpdateGPUAccuracyButton(); | 307 | void UpdateGPUAccuracyButton(); |
| 307 | void UpdateStatusButtons(); | 308 | void UpdateStatusButtons(); |
| @@ -336,6 +337,7 @@ private: | |||
| 336 | QPushButton* gpu_accuracy_button = nullptr; | 337 | QPushButton* gpu_accuracy_button = nullptr; |
| 337 | QPushButton* renderer_status_button = nullptr; | 338 | QPushButton* renderer_status_button = nullptr; |
| 338 | QPushButton* dock_status_button = nullptr; | 339 | QPushButton* dock_status_button = nullptr; |
| 340 | QPushButton* filter_status_button = nullptr; | ||
| 339 | QTimer status_bar_update_timer; | 341 | QTimer status_bar_update_timer; |
| 340 | 342 | ||
| 341 | std::unique_ptr<Config> config; | 343 | std::unique_ptr<Config> config; |