diff options
author | marha <marha@users.sourceforge.net> | 2014-07-01 08:46:12 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2014-07-01 08:46:12 +0200 |
commit | cfc5bafcb2db8c6e05d7be6bb7315960be08c0d8 (patch) | |
tree | 1103248fcbdd2cd7a9b6cf1d336da7b3f58d4e2b /mesalib/src/glsl/ast_to_hir.cpp | |
parent | fba3b6d1979c1d1ad0d56d46fc2d787f111c07fb (diff) | |
download | vcxsrv-cfc5bafcb2db8c6e05d7be6bb7315960be08c0d8.tar.gz vcxsrv-cfc5bafcb2db8c6e05d7be6bb7315960be08c0d8.tar.bz2 vcxsrv-cfc5bafcb2db8c6e05d7be6bb7315960be08c0d8.zip |
fontconfig mesa pixman git update 1 July 2014
pixman commit 5a2edb3f2c2cfde6b25ac614e2004a9f78583d74
fontconfig commit dab60e4476ada4ad4639599ea24dd012d4a79584
mesa commit 1bfc0a11027449ae7ab7c28eb695f26de530eccf
Diffstat (limited to 'mesalib/src/glsl/ast_to_hir.cpp')
-rw-r--r-- | mesalib/src/glsl/ast_to_hir.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp index 7ba04a808..042ef243b 100644 --- a/mesalib/src/glsl/ast_to_hir.cpp +++ b/mesalib/src/glsl/ast_to_hir.cpp @@ -2461,6 +2461,11 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, if (qual->flags.q.sample) var->data.sample = 1; + if (state->stage == MESA_SHADER_GEOMETRY && + qual->flags.q.out && qual->flags.q.stream) { + var->data.stream = qual->stream; + } + if (qual->flags.q.attribute && state->stage != MESA_SHADER_VERTEX) { var->type = glsl_type::error_type; _mesa_glsl_error(loc, state, @@ -5100,6 +5105,9 @@ ast_process_structure_or_interface_block(exec_list *instructions, fields[i].centroid = qual->flags.q.centroid ? 1 : 0; fields[i].sample = qual->flags.q.sample ? 1 : 0; + /* Only save explicitly defined streams in block's field */ + fields[i].stream = qual->flags.q.explicit_stream ? qual->stream : -1; + if (qual->flags.q.row_major || qual->flags.q.column_major) { if (!qual->flags.q.uniform) { _mesa_glsl_error(&loc, state, @@ -5548,6 +5556,17 @@ ast_interface_block::hir(exec_list *instructions, var->data.sample = fields[i].sample; var->init_interface_type(block_type); + if (fields[i].stream != -1 && + ((unsigned)fields[i].stream) != this->layout.stream) { + _mesa_glsl_error(&loc, state, + "stream layout qualifier on " + "interface block member `%s' does not match " + "the interface block (%d vs %d)", + var->name, fields[i].stream, this->layout.stream); + } + + var->data.stream = this->layout.stream; + if (redeclaring_per_vertex) { ir_variable *earlier = get_variable_being_redeclared(var, loc, state, |