[Mesa-dev] [PATCH 2/3] glsl: Tidy stream handling in merge_qualifier().
Timothy Arceri
timothy.arceri at collabora.com
Thu Aug 11 23:44:42 UTC 2016
On Thu, 2016-08-11 at 13:43 -0700, Kenneth Graunke wrote:
> 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.
Agreed. I added a FIXME for this when I added input_layout_mask. Anyway
thanks for fixing this up.
Series:
Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>
>
> Cc: Timothy Arceri <timothy.arceri at collabora.com>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
> src/compiler/glsl/ast_type.cpp | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/src/compiler/glsl/ast_type.cpp
> b/src/compiler/glsl/ast_type.cpp
> index 248b647..cabc698 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;
More information about the mesa-dev
mailing list