diff --git a/src/compiler/glsl/gl_nir_linker.c b/src/compiler/glsl/gl_nir_linker.c index 8b96bc380bf..e16f71bd6d6 100644 --- a/src/compiler/glsl/gl_nir_linker.c +++ b/src/compiler/glsl/gl_nir_linker.c @@ -1439,6 +1439,9 @@ gl_nir_link_glsl(const struct gl_constants *consts, MESA_TRACE_FUNC(); + /* Check and validate stream emissions in geometry shaders */ + validate_geometry_shader_emissions(consts, prog); + prog->last_vert_prog = NULL; for (int i = MESA_SHADER_GEOMETRY; i >= MESA_SHADER_VERTEX; i--) { if (prog->_LinkedShaders[i] == NULL) diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index c56a9cd7809..4f2196a70b2 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -3099,9 +3099,6 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) } } - /* Check and validate stream emissions in geometry shaders */ - validate_geometry_shader_emissions(consts, prog); - done: for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { free(shader_list[i]);