diff --git a/Core/Config.cpp b/Core/Config.cpp index a0267b51bb3b..9428837da667 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -847,6 +847,7 @@ static ConfigSetting graphicsSettings[] = { ConfigSetting("VendorBugChecksEnabled", &g_Config.bVendorBugChecksEnabled, true, false, false), ReportedConfigSetting("RenderingMode", &g_Config.iRenderingMode, 1, true, true), ConfigSetting("SoftwareRenderer", &g_Config.bSoftwareRendering, false, true, true), + ConfigSetting("SoftwareRendererJit", &g_Config.bSoftwareRenderingJit, true, true, true), ReportedConfigSetting("HardwareTransform", &g_Config.bHardwareTransform, true, true, true), ReportedConfigSetting("SoftwareSkinning", &g_Config.bSoftwareSkinning, true, true, true), ReportedConfigSetting("TextureFiltering", &g_Config.iTexFiltering, 1, true, true), diff --git a/Core/Config.h b/Core/Config.h index 7ded5c9aa012..5fa9aa674840 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -155,6 +155,7 @@ struct Config { std::string sMicDevice; bool bSoftwareRendering; + bool bSoftwareRenderingJit; bool bHardwareTransform; // only used in the GLES backend bool bSoftwareSkinning; // may speed up some games bool bVendorBugChecksEnabled; diff --git a/GPU/Software/DrawPixel.cpp b/GPU/Software/DrawPixel.cpp index ae50d83065ce..ee61f250aaeb 100644 --- a/GPU/Software/DrawPixel.cpp +++ b/GPU/Software/DrawPixel.cpp @@ -17,6 +17,7 @@ #include #include "Common/Data/Convert/ColorConv.h" +#include "Core/Config.h" #include "GPU/GPUState.h" #include "GPU/Software/DrawPixel.h" #include "GPU/Software/FuncId.h" @@ -562,13 +563,14 @@ SingleFunc PixelJitCache::GetSingle(const PixelFuncID &id) { } #if PPSSPP_ARCH(AMD64) && !PPSSPP_PLATFORM(UWP) - addresses_[id] = GetCodePointer(); - SingleFunc func = CompileSingle(id); - cache_[id] = func; - return func; -#else - return nullptr; + if (g_Config.bSoftwareRenderingJit) { + addresses_[id] = GetCodePointer(); + SingleFunc func = CompileSingle(id); + cache_[id] = func; + return func; + } #endif + return nullptr; } void PixelRegCache::Reset() { diff --git a/GPU/Software/Sampler.cpp b/GPU/Software/Sampler.cpp index ff28f30c5552..dfa24ef3228e 100644 --- a/GPU/Software/Sampler.cpp +++ b/GPU/Software/Sampler.cpp @@ -19,6 +19,7 @@ #include #include #include "Common/Data/Convert/ColorConv.h" +#include "Core/Config.h" #include "Core/Reporting.h" #include "GPU/Common/TextureDecoder.h" #include "GPU/GPUState.h" @@ -216,13 +217,14 @@ NearestFunc SamplerJitCache::GetNearest(const SamplerID &id) { } #if PPSSPP_ARCH(AMD64) && !PPSSPP_PLATFORM(UWP) - addresses_[id] = GetCodePointer(); - NearestFunc func = Compile(id); - cache_[id] = func; - return func; -#else - return nullptr; + if (g_Config.bSoftwareRenderingJit) { + addresses_[id] = GetCodePointer(); + NearestFunc func = Compile(id); + cache_[id] = func; + return func; + } #endif + return nullptr; } LinearFunc SamplerJitCache::GetLinear(const SamplerID &id) {