diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 150bb5e3c7..a473070991 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -1004,7 +1004,7 @@ void RasterizerOpenGL::SamplerInfo::SyncWithConfig(
 }
 
 void RasterizerOpenGL::SetShader() {
-    GLShader::PicaShaderConfig config = GLShader::PicaShaderConfig::CurrentConfig();
+    auto config = GLShader::PicaShaderConfig::BuildFromRegs(Pica::g_state.regs);
     std::unique_ptr<PicaShader> shader = std::make_unique<PicaShader>();
 
     // Find (or generate) the GLSL shader for the current TEV state
diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp
index 3b2a50f02b..54a8dde151 100644
--- a/src/video_core/renderer_opengl/gl_shader_gen.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp
@@ -24,14 +24,12 @@ using TevStageConfig = TexturingRegs::TevStageConfig;
 
 namespace GLShader {
 
-PicaShaderConfig PicaShaderConfig::CurrentConfig() {
+PicaShaderConfig PicaShaderConfig::BuildFromRegs(const Pica::Regs& regs) {
     PicaShaderConfig res;
 
     auto& state = res.state;
     std::memset(&state, 0, sizeof(PicaShaderConfig::State));
 
-    const auto& regs = Pica::g_state.regs;
-
     state.scissor_test_mode = regs.rasterizer.scissor_test.mode;
 
     state.depthmap_enable = regs.rasterizer.depthmap_enable;
diff --git a/src/video_core/renderer_opengl/gl_shader_gen.h b/src/video_core/renderer_opengl/gl_shader_gen.h
index e01bd34f98..921d976a10 100644
--- a/src/video_core/renderer_opengl/gl_shader_gen.h
+++ b/src/video_core/renderer_opengl/gl_shader_gen.h
@@ -39,8 +39,8 @@ enum Attributes {
  */
 union PicaShaderConfig {
 
-    /// Construct a PicaShaderConfig with the current Pica register configuration.
-    static PicaShaderConfig CurrentConfig();
+    /// Construct a PicaShaderConfig with the given Pica register configuration.
+    static PicaShaderConfig BuildFromRegs(const Pica::Regs& regs);
 
     bool TevStageUpdatesCombinerBufferColor(unsigned stage_index) const {
         return (stage_index < 4) && (state.combiner_buffer_input & (1 << stage_index));
@@ -58,7 +58,7 @@ union PicaShaderConfig {
     //       This makes BitField not TC when used in a union or struct so we have to resort
     //       to this ugly hack.
     //       Once that bug is fixed we can use Pica::Regs::TevStageConfig here.
-    //       Doesn't include const_color because we don't sync it, see comment in CurrentConfig()
+    //       Doesn't include const_color because we don't sync it, see comment in BuildFromRegs()
     struct TevStageConfigRaw {
         u32 sources_raw;
         u32 modifiers_raw;