On 03/22/2013 08:48 PM, Jordan Justen wrote:
On Wed, Mar 20, 2013 at 5:32 PM, Eric Anholt <e...@anholt.net> wrote:
Jordan Justen <jordan.l.jus...@intel.com> writes:
Previously uniform blocks allowed for the 'uniform' keyword
to be used with members of a uniform blocks. With interface
blocks 'in' can be used on 'in' interface block members and
'out' can be used on 'out' interface block members.
The basic_interface_block rule will verify that the same
qualifier type is used with the block and each member.
- type->qualifier = $1;
- type->qualifier.flags.q.uniform = true;
- type->specifier = $3;
+ if (!type->qualifier.merge_qualifier(& @1, state, $1)) {
+ YYERROR;
+ }
+
+ if (type->qualifier.flags.q.attribute) {
+ _mesa_glsl_error(& @1, state,
+ "keyword 'attribute' cannot be used with "
+ "interface block member\n");
+ } else if (type->qualifier.flags.q.varying) {
+ _mesa_glsl_error(& @1, state,
+ "keyword 'varying' cannot be used with "
+ "interface block member\n");
+ }
I think some more qualifiers are getting allowed now, are they all intentional?
- invariant
- smooth
- flat
- noperspective
Hmm. Yeah this seems off. I'll look into it.
Yeah, sounds like you don't want to use fully_specified_type here. You
could either
1. Change uniformopt into /* nothing */ | UNIFORM | IN_TOK | OUT_TOK, or
2. Create a new production similar to fully_specified_type that's
type_specifier
| UNIFORM type_specifier
| IN_TOK type_specifier
| OUT_TOK type_specifier
3. ...or think of something else :)
Could 7/15 get easily moved before this one, so that we don't allow
uniforms in our in/out blocks at this commit?
Will do.
Thanks!
-Jordan
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev