linker: Move global instructions from the linked shader first

For the shader containing 'main', use the linked shader (i.e., the
clone of the original shader that contained main) as the source for
global instructions to move into main.
This commit is contained in:
Ian Romanick
2010-07-19 12:33:54 -07:00
parent 5304493c40
commit 9303e358cb
+8 -4
View File
@@ -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.