summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/glsl/linker.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index c71c07d6e97..d46744eeda5 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -687,12 +687,16 @@ link_intrastage_shaders(struct gl_shader_program *prog,
/* Move any instructions other than variable declarations or function
* declarations into main.
*/
- exec_node *insertion_point = (exec_node *) &main_sig->body;
+ exec_node *insertion_point =
+ move_non_declarations(linked->ir, (exec_node *) &main_sig->body, false,
+ linked);
+
for (unsigned i = 0; i < num_shaders; i++) {
+ if (shader_list[i] == main)
+ continue;
+
insertion_point = move_non_declarations(shader_list[i]->ir,
- insertion_point,
- (shader_list[i] != main),
- linked);
+ insertion_point, true, linked);
}
/* Resolve initializers for global variables in the linked shader.