diff options
author | Kenneth Graunke <[email protected]> | 2016-08-11 11:44:09 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2016-08-11 23:56:48 -0700 |
commit | 0ed316360f6879d6e5179330d30e075e29f029e1 (patch) | |
tree | 09ddbce16837cf949f85df9da6c05cfb62001fad /src/compiler | |
parent | dffa371665fc45481f6b6686e586f9be2b36a915 (diff) |
glsl: Tidy stream handling in merge_qualifier().
The previous commit fixed xfb_buffer handling, which was largely copy
and pasted from the stream handling. The difference is that stream
was set in input_layout_mask, so it worked.
However, that's totally rubbish: stream is only valid on geometry shader
outputs. Presumably this was to hack around inout. Instead, apply the
solution I used in the previous fix.
Really, we just need to separate shader interface and parameter
qualifier handling so this isn't a mess, but this patch at least
tidies it slightly.
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/glsl/ast_type.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/compiler/glsl/ast_type.cpp b/src/compiler/glsl/ast_type.cpp index 248b64721f7..cabc698f3b9 100644 --- a/src/compiler/glsl/ast_type.cpp +++ b/src/compiler/glsl/ast_type.cpp @@ -178,8 +178,6 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc, if (state->stage == MESA_SHADER_GEOMETRY) { allowed_duplicates_mask.flags.i |= stream_layout_mask.flags.i; - input_layout_mask.flags.i |= - stream_layout_mask.flags.i; } if (is_single_layout_merge && !state->has_enhanced_layouts() && @@ -229,7 +227,8 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc, if (q.flags.q.stream) { this->flags.q.stream = 1; this->stream = q.stream; - } else if (!this->flags.q.stream && this->flags.q.out) { + } else if (!this->flags.q.stream && this->flags.q.out && + !this->flags.q.in) { /* Assign default global stream value */ this->flags.q.stream = 1; this->stream = state->out_qualifier->stream; |