diff options
author | marha <marha@users.sourceforge.net> | 2013-06-28 16:49:07 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-06-28 16:49:07 +0200 |
commit | 3c204c4a20943586532ce477ced827d108f3b4b0 (patch) | |
tree | c9891fdc315c41cc90806634589231172572b2ba /mesalib/src/glsl/ast_to_hir.cpp | |
parent | 73a26452133415b7e3bf54836d23995d59a7bac4 (diff) | |
parent | ced1a6b8f5a750fcd3b8d3d0d9bbdee830064e6c (diff) | |
download | vcxsrv-3c204c4a20943586532ce477ced827d108f3b4b0.tar.gz vcxsrv-3c204c4a20943586532ce477ced827d108f3b4b0.tar.bz2 vcxsrv-3c204c4a20943586532ce477ced827d108f3b4b0.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
fontconfig mesa git update 28 June 2013
libXext mesa git update 29 June 20013
Diffstat (limited to 'mesalib/src/glsl/ast_to_hir.cpp')
-rw-r--r-- | mesalib/src/glsl/ast_to_hir.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp index 4b5f04980..efbd72c18 100644 --- a/mesalib/src/glsl/ast_to_hir.cpp +++ b/mesalib/src/glsl/ast_to_hir.cpp @@ -94,6 +94,24 @@ _mesa_ast_to_hir(exec_list *instructions, struct _mesa_glsl_parse_state *state) detect_conflicting_assignments(state, instructions); state->toplevel_ir = NULL; + + /* Move all of the variable declarations to the front of the IR list, and + * reverse the order. This has the (intended!) side effect that vertex + * shader inputs and fragment shader outputs will appear in the IR in the + * same order that they appeared in the shader code. This results in the + * locations being assigned in the declared order. Many (arguably buggy) + * applications depend on this behavior, and it matches what nearly all + * other drivers do. + */ + foreach_list_safe(node, instructions) { + ir_variable *const var = ((ir_instruction *) node)->as_variable(); + + if (var == NULL) + continue; + + var->remove(); + instructions->push_head(var); + } } |