From 0441d6aa5eb2d1ac45f1f1973fa5ad3adaf71f08 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Wed, 17 Jun 2020 15:06:40 -0500 Subject: [PATCH] VertexShaderManager: Avoid accessing freelook control type configuration each call which caused a performance hit, move check to RenderBase where it is checked when config changes --- Source/Core/VideoCommon/RenderBase.cpp | 6 ++++++ Source/Core/VideoCommon/VertexShaderManager.cpp | 3 --- Source/Core/VideoCommon/VideoConfig.cpp | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index f3aa366af7..b2e7015ca6 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -63,6 +63,7 @@ #include "VideoCommon/FrameDump.h" #include "VideoCommon/FramebufferManager.h" #include "VideoCommon/FramebufferShaderGen.h" +#include "VideoCommon/FreeLookCamera.h" #include "VideoCommon/ImageWrite.h" #include "VideoCommon/NetPlayChatUI.h" #include "VideoCommon/NetPlayGolfUI.h" @@ -406,6 +407,11 @@ void Renderer::CheckForConfigChanges() UpdateActiveConfig(); + if (g_ActiveConfig.bFreeLook) + { + g_freelook_camera.SetControlType(g_ActiveConfig.iFreelookControlType); + } + // Update texture cache settings with any changed options. g_texture_cache->OnConfigChanged(g_ActiveConfig); diff --git a/Source/Core/VideoCommon/VertexShaderManager.cpp b/Source/Core/VideoCommon/VertexShaderManager.cpp index 6c65a86efa..d9c44d767c 100644 --- a/Source/Core/VideoCommon/VertexShaderManager.cpp +++ b/Source/Core/VideoCommon/VertexShaderManager.cpp @@ -449,9 +449,6 @@ void VertexShaderManager::SetConstants() dirty = true; } - - // Handle a potential config change - g_freelook_camera.SetControlType(Config::Get(Config::GFX_FREE_LOOK_CONTROL_TYPE)); } void VertexShaderManager::InvalidateXFRange(int start, int end) diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp index b624755b11..1514f22db8 100644 --- a/Source/Core/VideoCommon/VideoConfig.cpp +++ b/Source/Core/VideoCommon/VideoConfig.cpp @@ -91,6 +91,7 @@ void VideoConfig::Refresh() bDumpXFBTarget = Config::Get(Config::GFX_DUMP_XFB_TARGET); bDumpFramesAsImages = Config::Get(Config::GFX_DUMP_FRAMES_AS_IMAGES); bFreeLook = Config::Get(Config::GFX_FREE_LOOK); + iFreelookControlType = Config::Get(Config::GFX_FREE_LOOK_CONTROL_TYPE); bUseFFV1 = Config::Get(Config::GFX_USE_FFV1); sDumpFormat = Config::Get(Config::GFX_DUMP_FORMAT); sDumpCodec = Config::Get(Config::GFX_DUMP_CODEC);