From 88029a14116bf6eccbc7be5edffa73051e92276d Mon Sep 17 00:00:00 2001 From: KamFretoZ <14798312+kamfretoz@users.noreply.github.com> Date: Wed, 3 Jun 2026 23:30:32 +0700 Subject: [PATCH] Qt/FSUI: Enable ROV by default --- .../Settings/GraphicsAdvancedSettingsTab.ui | 62 +++++++++++-------- .../GraphicsHardwareRenderingSettingsTab.ui | 8 --- pcsx2-qt/Settings/GraphicsSettingsWidget.cpp | 14 +++-- pcsx2/ImGui/FullscreenUI_Settings.cpp | 20 +++--- pcsx2/Pcsx2Config.cpp | 2 +- 5 files changed, 55 insertions(+), 51 deletions(-) diff --git a/pcsx2-qt/Settings/GraphicsAdvancedSettingsTab.ui b/pcsx2-qt/Settings/GraphicsAdvancedSettingsTab.ui index a1b419283e..e3d9d2ed2a 100644 --- a/pcsx2-qt/Settings/GraphicsAdvancedSettingsTab.ui +++ b/pcsx2-qt/Settings/GraphicsAdvancedSettingsTab.ui @@ -91,27 +91,6 @@ - - - - Extended Upscaling Multipliers - - - - - - - Disable Mailbox Presentation - - - - - - - Use Blit Swap Chain - - - @@ -119,14 +98,42 @@ - + Spin GPU During Readbacks + + + + Use Blit Swap Chain + + + + + + + Rasterizer Ordered View + + + + + + Disable Mailbox Presentation + + + + + + + Extended Upscaling Multipliers + + + + ROV Barriers Vulkan @@ -360,20 +367,21 @@ gsDumpCompression texturePreloading exclusiveFullscreenControl - rovBarriersVK - useBlitSwapChain + rov extendedUpscales - disableMailboxPresentation - spinCPUDuringReadbacks spinGPUDuringReadbacks + spinCPUDuringReadbacks + useBlitSwapChain + disableMailboxPresentation + rovBarriersVK ntscFrameRate palFrameRate overrideTextureBarriers useDebugDevice - useDebugBlend disableFramebufferFetch disableShaderCache disableVertexShaderExpand + useDebugBlend diff --git a/pcsx2-qt/Settings/GraphicsHardwareRenderingSettingsTab.ui b/pcsx2-qt/Settings/GraphicsHardwareRenderingSettingsTab.ui index c0f22996df..952f829eb4 100644 --- a/pcsx2-qt/Settings/GraphicsHardwareRenderingSettingsTab.ui +++ b/pcsx2-qt/Settings/GraphicsHardwareRenderingSettingsTab.ui @@ -72,13 +72,6 @@ - - - ROV - - - - Manual Hardware Renderer Fixes @@ -250,7 +243,6 @@ mipmapping accurateAlphaTest hwAA1 - rov enableHWFixes diff --git a/pcsx2-qt/Settings/GraphicsSettingsWidget.cpp b/pcsx2-qt/Settings/GraphicsSettingsWidget.cpp index d0220b905b..5c01c4bce1 100644 --- a/pcsx2-qt/Settings/GraphicsSettingsWidget.cpp +++ b/pcsx2-qt/Settings/GraphicsSettingsWidget.cpp @@ -113,7 +113,6 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* settings_dialog, SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_hw.mipmapping, "EmuCore/GS", "hw_mipmap", true); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_hw.accurateAlphaTest, "EmuCore/GS", "HWAccurateAlphaTest", false); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_hw.hwAA1, "EmuCore/GS", "HWAA1", false); - SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_hw.rov, "EmuCore/GS", "HWROV", false); SettingWidgetBinder::BindWidgetToIntSetting( sif, m_hw.blending, "EmuCore/GS", "accurate_blending_unit", static_cast(AccBlendLevel::Basic)); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_hw.enableHWFixes, "EmuCore/GS", "UserHacks", false); @@ -224,6 +223,7 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* settings_dialog, ////////////////////////////////////////////////////////////////////////// // Advanced Settings ////////////////////////////////////////////////////////////////////////// + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_advanced.rov, "EmuCore/GS", "HWROV", true); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_advanced.useBlitSwapChain, "EmuCore/GS", "UseBlitSwapChain", false); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_advanced.useDebugDevice, "EmuCore/GS", "UseDebugDevice", false); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_advanced.useDebugBlend, "EmuCore/GS", "UseDebugBlend", false); @@ -499,9 +499,6 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* settings_dialog, dialog()->registerWidgetHelp( m_hw.hwAA1, tr("AA1"), tr("Unchecked"), tr("Enables AA1 (PS2 antialiasing), which some games require to render correctly. This may result in a heavy performance penalty.")); - dialog()->registerWidgetHelp( - m_hw.rov, tr("ROV"), tr("Unchecked"), tr("Enables ROV (Rasterizer Ordered View), which allows feedback loops to be executed with fewer draw calls. Can improve performance in feedback heavy games with higher accuracy settings.")); - dialog()->registerWidgetHelp( m_hw.textureFiltering, tr("Texture Filtering"), tr("Bilinear (PS2)"), tr("Changes what filtering algorithm is used to map textures to surfaces.
" @@ -762,7 +759,10 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* settings_dialog, tr("Overrides the driver's heuristics for enabling exclusive fullscreen, or direct flip/scanout.
" "Disallowing exclusive fullscreen may enable smoother task switching and overlays, but increase input latency.")); - dialog()->registerWidgetHelp(m_advanced.rovBarriersVK, tr("ROV Barriers Vulkan"), tr("None"), + dialog()->registerWidgetHelp( + m_advanced.rov, tr("Rasterizer Ordered View"), tr("Checked"), tr("Enables Rasterizer Ordered View (ROV), which allows feedback loops to be executed with fewer draw calls. Can improve performance in feedback heavy games with higher accuracy settings.")); + + dialog()->registerWidgetHelp(m_advanced.rovBarriersVK, tr("ROV Barriers Vulkan"), tr("Unchecked"), tr("Forces extra barriers when using ROV with Vulkan to fix graphical issues present in some games and hardware configurations.")); dialog()->registerWidgetHelp(m_advanced.disableMailboxPresentation, tr("Disable Mailbox Presentation"), tr("Unchecked"), @@ -1010,6 +1010,7 @@ void GraphicsSettingsWidget::updateRendererDependentOptions() const bool is_software = (type == GSRendererType::SW); const bool is_auto = (type == GSRendererType::Auto); const bool is_vk = (type == GSRendererType::VK); + const bool is_ogl = (type == GSRendererType::OGL); const bool is_disable_barriers = (type == GSRendererType::Metal || type == GSRendererType::SW); const bool hw_fixes = (is_hardware && m_hw.enableHWFixes && m_hw.enableHWFixes->checkState() == Qt::Checked); @@ -1052,6 +1053,9 @@ void GraphicsSettingsWidget::updateRendererDependentOptions() if (m_advanced.exclusiveFullscreenControl) m_advanced.exclusiveFullscreenControl->setEnabled(is_auto || is_vk); + if (m_advanced.rov) + m_advanced.rov->setDisabled(!is_hardware || is_ogl); + // populate adapters std::vector adapters = GSGetAdapterInfo(type); const GSAdapterInfo* current_adapter_info = nullptr; diff --git a/pcsx2/ImGui/FullscreenUI_Settings.cpp b/pcsx2/ImGui/FullscreenUI_Settings.cpp index 6bb19322e3..94dfbe9370 100644 --- a/pcsx2/ImGui/FullscreenUI_Settings.cpp +++ b/pcsx2/ImGui/FullscreenUI_Settings.cpp @@ -3034,10 +3034,6 @@ void FullscreenUI::DrawGraphicsSettingsPage(SettingsInterface* bsi, bool show_ad "EmuCore/GS", "HWAA1", false); DrawToggleSetting( bsi, FSUI_ICONSTR(ICON_FA_BULLSEYE, "Mipmapping"), FSUI_CSTR("Enables emulation of the GS's texture mipmapping."), "EmuCore/GS", "hw_mipmap", true); - DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_LAYER_GROUP, "ROV"), - FSUI_CSTR("Enables ROV (Rasterizer Ordered View), which allows feedback loops to be executed with fewer draw calls. Can improve performance in " - "feedback heavy games with higher accuracy settings."), - "EmuCore/GS", "HWROV", false); } else { @@ -3287,6 +3283,13 @@ void FullscreenUI::DrawGraphicsSettingsPage(SettingsInterface* bsi, bool show_ad if (show_advanced_settings) { MenuHeading(FSUI_CSTR("Advanced")); + if (is_hardware && effective_renderer != GSRendererType::OGL) + { + DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_LAYER_GROUP, "Rasterizer Ordered View"), + FSUI_CSTR("Enables Rasterizer Ordered View (ROV), which allows feedback loops to be executed with fewer draw calls. Can improve performance in feedback heavy games " + "with higher accuracy settings."), + "EmuCore/GS", "HWROV", true); + } DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_FORWARD, "Skip Presenting Duplicate Frames"), FSUI_CSTR("Skips displaying frames that don't change in 25/30fps games. Can improve speed, but increase input lag/make frame pacing " "worse."), @@ -3319,12 +3322,9 @@ void FullscreenUI::DrawGraphicsSettingsPage(SettingsInterface* bsi, bool show_ad "EmuCore/GS", "DisableShaderCache", false); DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_BAN, "Disable Vertex Shader Expand"), FSUI_CSTR("Falls back to the CPU for expanding sprites/lines."), "EmuCore/GS", "DisableVertexShaderExpand", false); - if (is_hardware && effective_renderer == GSRendererType::VK) - { - DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_ROAD_BARRIER, "ROV Barriers Vulkan"), - FSUI_CSTR("Forces extra barriers when using ROV with Vulkan to fix graphical issues present in some games and hardware configurations."), - "EmuCore/GS", "HWROVBarriersVK", false); - } + DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_ROAD_BARRIER, "ROV Barriers Vulkan"), + FSUI_CSTR("Forces extra barriers when using ROV with Vulkan to fix graphical issues present in some games and hardware configurations."), + "EmuCore/GS", "HWROVBarriersVK", false); DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_DOWNLOAD, "Texture Preloading"), FSUI_CSTR( "Uploads full textures to the GPU on use, rather than only the utilized regions. Can improve performance in some games."), diff --git a/pcsx2/Pcsx2Config.cpp b/pcsx2/Pcsx2Config.cpp index df57ca9341..e02d7d7a1c 100644 --- a/pcsx2/Pcsx2Config.cpp +++ b/pcsx2/Pcsx2Config.cpp @@ -755,7 +755,7 @@ Pcsx2Config::GSOptions::GSOptions() HWAccurateAlphaTest = false; HWAA1 = false; UseDebugBlend = false; - HWROV = false; + HWROV = true; HWROVLogging = false; HWROVBarriersVK = false;