diff --git a/src/compiler/glsl/gl_nir_linker.c b/src/compiler/glsl/gl_nir_linker.c index e874ff88c52..473456e01cb 100644 --- a/src/compiler/glsl/gl_nir_linker.c +++ b/src/compiler/glsl/gl_nir_linker.c @@ -1302,6 +1302,15 @@ gl_nir_link_glsl(const struct gl_constants *consts, MESA_TRACE_FUNC(); + prog->last_vert_prog = NULL; + for (int i = MESA_SHADER_GEOMETRY; i >= MESA_SHADER_VERTEX; i--) { + if (prog->_LinkedShaders[i] == NULL) + continue; + + prog->last_vert_prog = prog->_LinkedShaders[i]->Program; + break; + } + if (prog->SeparateShader) disable_varying_optimizations_for_sso(prog); diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index 514b1722e95..7164af478f9 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -3795,15 +3795,6 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) } } - prog->last_vert_prog = NULL; - for (int i = MESA_SHADER_GEOMETRY; i >= MESA_SHADER_VERTEX; i--) { - if (prog->_LinkedShaders[i] == NULL) - continue; - - prog->last_vert_prog = prog->_LinkedShaders[i]->Program; - break; - } - for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { if (prog->_LinkedShaders[i] == NULL) continue;