aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/glsl/ast_to_hir.cpp
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-06-28 16:47:15 +0200
committermarha <marha@users.sourceforge.net>2013-06-28 16:47:15 +0200
commitced1a6b8f5a750fcd3b8d3d0d9bbdee830064e6c (patch)
tree24d79f7eaee4d69dde46cf88aa7314a4fceebbe5 /mesalib/src/glsl/ast_to_hir.cpp
parent2fe2056807d1304de86deb2b59992d51d9252ad0 (diff)
downloadvcxsrv-ced1a6b8f5a750fcd3b8d3d0d9bbdee830064e6c.tar.gz
vcxsrv-ced1a6b8f5a750fcd3b8d3d0d9bbdee830064e6c.tar.bz2
vcxsrv-ced1a6b8f5a750fcd3b8d3d0d9bbdee830064e6c.zip
fontconfig mesa git update 28 June 2013
fontconfig commit 197d06c49b01413303f2c92130594daa4fcaa6ad mesa commit 24b05ff1581b612ab6dbf4937fa4b644b4e61379
Diffstat (limited to 'mesalib/src/glsl/ast_to_hir.cpp')
-rw-r--r--mesalib/src/glsl/ast_to_hir.cpp18
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);
+ }
}