[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