summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/settings.h1
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp1
-rw-r--r--src/yuzu/configuration/configure_graphics.ui2
-rw-r--r--src/yuzu/main.cpp56
-rw-r--r--src/yuzu/main.h2
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
75struct ResolutionScalingInfo { 76struct 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
3064void 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
3036void GMainWindow::UpdateStatusButtons() { 3091void 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
3043void GMainWindow::UpdateUISettings() { 3099void 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;