From f5255eefaffc6d3a3c981956f04a03b045eaa096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Thu, 15 Oct 2026 23:26:19 +0200 Subject: [PATCH] Move the Hardware Transform setting to developer tools, reset by renaming the key. This setting should always be on, not having it ruins performance. --- Core/Config.cpp | 2 +- UI/DeveloperToolsScreen.cpp | 1 + UI/EmuScreen.cpp | 5 +++++ UI/GameSettingsScreen.cpp | 5 ----- Windows/MainWindowMenu.cpp | 11 ----------- Windows/ppsspp.rc | 2 -- Windows/resource.h | 1 - libretro/libretro.cpp | 9 --------- libretro/libretro_core_options.h | 30 ------------------------------ 9 files changed, 7 insertions(+), 59 deletions(-) diff --git a/Core/Config.cpp b/Core/Config.cpp index 5961e2d207..a39aea63b4 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -724,7 +724,7 @@ static const ConfigSetting graphicsSettings[] = { ConfigSetting("DepthRasterMode", SETTING(g_Config, iDepthRasterMode), &DefaultDepthRaster, CfgFlag::PER_GAME | CfgFlag::REPORT), ConfigSetting("SoftwareRenderer", SETTING(g_Config, bSoftwareRendering), false, CfgFlag::PER_GAME), ConfigSetting("SoftwareDisableDithering", SETTING(g_Config, bSoftwareDisableDithering), false, CfgFlag::PER_GAME), - ConfigSetting("HardwareTransform", SETTING(g_Config, bHardwareTransform), true, CfgFlag::PER_GAME | CfgFlag::REPORT), + ConfigSetting("HardwareTransformDebug", SETTING(g_Config, bHardwareTransform), true, CfgFlag::PER_GAME | CfgFlag::REPORT), ConfigSetting("TextureFiltering", SETTING(g_Config, iTexFiltering), 1, CfgFlag::PER_GAME | CfgFlag::REPORT), ConfigSetting("Smart2DTexFiltering", SETTING(g_Config, bSmart2DTexFiltering), false, CfgFlag::PER_GAME | CfgFlag::REPORT), ConfigSetting("InternalResolution", SETTING(g_Config, iInternalResolution), &DefaultInternalResolution, CfgFlag::PER_GAME | CfgFlag::REPORT), diff --git a/UI/DeveloperToolsScreen.cpp b/UI/DeveloperToolsScreen.cpp index 7ed0442a33..2b97b69d19 100644 --- a/UI/DeveloperToolsScreen.cpp +++ b/UI/DeveloperToolsScreen.cpp @@ -521,6 +521,7 @@ void DeveloperToolsScreen::CreateGraphicsTab(UI::LinearLayout *list) { list->Add(new ItemHeader(sy->T("General"))); list->Add(new CheckBox(&g_Config.bVendorBugChecksEnabled, dev->T("Enable driver bug workarounds"))); list->Add(new CheckBox(&g_Config.bShaderCache, dev->T("Enable shader cache"))); + list->Add(new CheckBox(&g_Config.bHardwareTransform, gr->T("Hardware Transform"))); auto displayRefreshRate = list->Add(new PopupSliderChoice(&g_Config.iDisplayRefreshRate, 60, 1000, 60, dev->T("Display refresh rate"), 1, screenManager())); displayRefreshRate->SetFormat(si->T("%d Hz")); diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index 14f866c3f3..2a7ec8b1f2 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -282,6 +282,11 @@ void EmuScreen::ProcessGameBoot(const Path &filename) { g_OSD.Show(OSDType::MESSAGE_WARNING, "Shader cache is disabled (developer)"); } + if (!g_Config.bHardwareTransform) { + // Only developers should ever see this. + g_OSD.Show(OSDType::MESSAGE_WARNING, "Hardware transform is disabled (developer)"); + } + if (g_Config.bTiltInputEnabled && g_Config.iTiltInputType != 0 && System_GetPropertyBool(SYSPROP_HAS_ACCELEROMETER)) { auto co = GetI18NCategory(I18NCat::CONTROLS); auto di = GetI18NCategory(I18NCat::DIALOG); diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index f53fffa8a5..8bb323552b 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -520,11 +520,6 @@ void GameSettingsScreen::CreateGraphicsSettings(UI::ViewGroup *graphicsSettings) graphicsSettings->Add(new SettingHint(gr->T("Faster, input lag"), inflightChoice)); // TODO: This hint could use improvement. } - if (deviceType != DEVICE_TYPE_VR) { - CheckBox *hwTransform = graphicsSettings->Add(new CheckBox(&g_Config.bHardwareTransform, gr->T("Hardware Transform"))); - hwTransform->SetDisabledPtr(&g_Config.bSoftwareRendering); - } - graphicsSettings->Add(new ItemHeader(gr->T("Texture upscaling"))); if (GetGPUBackend() == GPUBackend::VULKAN) { diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp index 068ad6683c..2a2b8ee2c9 100644 --- a/Windows/MainWindowMenu.cpp +++ b/Windows/MainWindowMenu.cpp @@ -303,7 +303,6 @@ namespace MainWindow { TranslateMenuItem(menu, ID_TEXTURESCALING_BICUBIC); TranslateMenuItem(menu, ID_TEXTURESCALING_HYBRID_BICUBIC); TranslateMenuItem(menu, ID_TEXTURESCALING_DEPOSTERIZE); - TranslateMenuItem(menu, ID_OPTIONS_HARDWARETRANSFORM); TranslateMenuItem(menu, ID_EMULATION_SOUND); TranslateMenuItem(menu, ID_EMULATION_CHEATS, g_Config.bSystemControls ? L"\tCtrl+T" : L""); TranslateMenuItem(menu, ID_EMULATION_CHAT, g_Config.bSystemControls ? L"\tCtrl+C" : L""); @@ -733,15 +732,6 @@ namespace MainWindow { System_PostUIMessage(UIMessage::REQUEST_CLEAR_JIT); break; - case ID_OPTIONS_HARDWARETRANSFORM: - System_RunOnMainThread([]() { - auto gr = GetI18NCategory(I18NCat::GRAPHICS); - g_Config.bHardwareTransform = !g_Config.bHardwareTransform; - System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED); - g_OSD.ShowOnOff(gr->T("Hardware Transform"), g_Config.bHardwareTransform); - }); - break; - case ID_OPTIONS_DISPLAY_LAYOUT: System_PostUIMessage(UIMessage::SHOW_DISPLAY_LAYOUT_EDITOR); break; @@ -1047,7 +1037,6 @@ namespace MainWindow { #define CHECKITEM(item,value) CheckMenuItem(menu,item,MF_BYCOMMAND | ((value) ? MF_CHECKED : MF_UNCHECKED)); CHECKITEM(ID_DEBUG_IGNOREILLEGALREADS, g_Config.bIgnoreBadMemAccess); CHECKITEM(ID_DEBUG_SHOWDEBUGSTATISTICS, (DebugOverlay)g_Config.iDebugOverlay == DebugOverlay::DEBUG_STATS); - CHECKITEM(ID_OPTIONS_HARDWARETRANSFORM, g_Config.bHardwareTransform); CHECKITEM(ID_DEBUG_BREAKONLOAD, !g_Config.bAutoRun); CHECKITEM(ID_OPTIONS_FRAMESKIP_AUTO, g_Config.bAutoFrameSkip); CHECKITEM(ID_OPTIONS_FRAMESKIP, g_Config.iFrameSkip != FRAMESKIP_OFF); diff --git a/Windows/ppsspp.rc b/Windows/ppsspp.rc index 11607ab915..9c37132b38 100644 --- a/Windows/ppsspp.rc +++ b/Windows/ppsspp.rc @@ -668,8 +668,6 @@ BEGIN MENUITEM "", 0, MFT_SEPARATOR MENUITEM "Deposterize", ID_TEXTURESCALING_DEPOSTERIZE END - MENUITEM "Hardware Transform", ID_OPTIONS_HARDWARETRANSFORM - MENUITEM "", 0, MFT_SEPARATOR MENUITEM "Enable Sound", ID_EMULATION_SOUND MENUITEM "", 0, MFT_SEPARATOR MENUITEM "Enable Cheats", ID_EMULATION_CHEATS diff --git a/Windows/resource.h b/Windows/resource.h index feafb68960..d5343270ba 100644 --- a/Windows/resource.h +++ b/Windows/resource.h @@ -159,7 +159,6 @@ #define ID_OPTIONS_SCREEN3X 40027 #define ID_OPTIONS_SCREEN4X 40028 #define ID_OPTIONS_SCREEN5X 40029 -#define ID_OPTIONS_HARDWARETRANSFORM 40030 #define IDC_STEPHLE 40032 #define ID_OPTIONS_LINEARFILTERING 40033 #define ID_OPTIONS_AUTOMAXQUALITYFILTERING 40043 diff --git a/libretro/libretro.cpp b/libretro/libretro.cpp index b108b2f851..fb2efa16ac 100644 --- a/libretro/libretro.cpp +++ b/libretro/libretro.cpp @@ -820,15 +820,6 @@ static void check_variables(CoreParameter &coreParam) g_Config.iSplineBezierQuality = 2; } - var.key = "ppsspp_gpu_hardware_transform"; - if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) - { - if (!strcmp(var.value, "disabled")) - g_Config.bHardwareTransform = false; - else - g_Config.bHardwareTransform = true; - } - var.key = "ppsspp_lower_resolution_for_effects"; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { diff --git a/libretro/libretro_core_options.h b/libretro/libretro_core_options.h index 333ac3a5e1..ce718617cb 100644 --- a/libretro/libretro_core_options.h +++ b/libretro/libretro_core_options.h @@ -567,36 +567,6 @@ struct retro_core_option_v2_definition option_defs_us[] = { }, "disabled" }, - { - "ppsspp_gpu_hardware_transform", - "Hardware Transform", - NULL, - NULL, - NULL, - "video", - BOOL_OPTIONS, - "enabled" - }, - { - "ppsspp_software_skinning", - "Software Skinning", - NULL, - "Combine skinned model draws on the CPU, faster in most games.", - NULL, - "video", - BOOL_OPTIONS, - "enabled" - }, - { - "ppsspp_hardware_tesselation", - "Hardware Tesselation", - NULL, - "Uses hardware to make curves.", - NULL, - "video", - BOOL_OPTIONS, - "disabled" - }, { "ppsspp_texture_scaling_type", "Texture Upscale Type",