diff options
author | Eric Anholt <eric@anholt.net> | 2010-07-26 17:47:59 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-07-26 17:53:27 -0700 |
commit | afe125e0a18ac3886c45c7e6b02b122fb2d327b5 (patch) | |
tree | 78621707e71154c0b388b0baacffc26432b7e992 /src/glsl/cl/sl_cl_parse.c | |
parent | d64343f1ae84979bd154475badf11af8a9bfc2eb (diff) | |
parent | 5403ca79b225605c79f49866a6497c97da53be3b (diff) |
Merge remote branch 'origin/master' into glsl2
This pulls in multiple i965 driver fixes which will help ensure better
testing coverage during development, and also gets past the conflicts
of the src/mesa/shader -> src/mesa/program move.
Conflicts:
src/mesa/Makefile
src/mesa/main/shaderapi.c
src/mesa/main/shaderobj.h
Diffstat (limited to 'src/glsl/cl/sl_cl_parse.c')
-rw-r--r-- | src/glsl/cl/sl_cl_parse.c | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/src/glsl/cl/sl_cl_parse.c b/src/glsl/cl/sl_cl_parse.c index 663436dde9..09456f5219 100644 --- a/src/glsl/cl/sl_cl_parse.c +++ b/src/glsl/cl/sl_cl_parse.c @@ -246,6 +246,7 @@ #define PARAM_QUALIFIER_IN 0 #define PARAM_QUALIFIER_OUT 1 #define PARAM_QUALIFIER_INOUT 2 +#define PARAM_QUALIFIER_NONE 3 /* function parameter */ #define PARAMETER_NONE 0 @@ -836,7 +837,6 @@ _parse_storage_qualifier(struct parse_context *ctx, return 0; } - static int _parse_struct_declarator(struct parse_context *ctx, struct parse_state *ps) @@ -1114,6 +1114,21 @@ _parse_type_specifier(struct parse_context *ctx, return 0; } +static int +_parse_parameter_qualifier(struct parse_context *ctx, + struct parse_state *ps) +{ + unsigned int e = _emit(ctx, &ps->out, PARAM_QUALIFIER_NONE); + + if (_parse_id(ctx, ctx->dict.in, ps) == 0) { + _update(ctx, e, PARAM_QUALIFIER_IN); + } else if (_parse_id(ctx, ctx->dict.out, ps) == 0) { + _update(ctx, e, PARAM_QUALIFIER_OUT); + } else if (_parse_id(ctx, ctx->dict.inout, ps) == 0) { + _update(ctx, e, PARAM_QUALIFIER_INOUT); + } + return 0; +} static int _parse_fully_specified_type(struct parse_context *ctx, @@ -1136,6 +1151,7 @@ _parse_fully_specified_type(struct parse_context *ctx, if (_parse_storage_qualifier(ctx, &p)) { _emit(ctx, &p.out, TYPE_QUALIFIER_NONE); } + _parse_parameter_qualifier(ctx, &p); if (_parse_precision(ctx, &p)) { _emit(ctx, &p.out, PRECISION_DEFAULT); } @@ -1168,23 +1184,6 @@ _parse_function_header(struct parse_context *ctx, static int -_parse_parameter_qualifier(struct parse_context *ctx, - struct parse_state *ps) -{ - unsigned int e = _emit(ctx, &ps->out, PARAM_QUALIFIER_IN); - - if (_parse_id(ctx, ctx->dict.out, ps) == 0) { - _update(ctx, e, PARAM_QUALIFIER_OUT); - } else if (_parse_id(ctx, ctx->dict.inout, ps) == 0) { - _update(ctx, e, PARAM_QUALIFIER_INOUT); - } else { - _parse_id(ctx, ctx->dict.in, ps); - } - return 0; -} - - -static int _parse_function_identifier(struct parse_context *ctx, struct parse_state *ps) { @@ -2192,9 +2191,8 @@ _parse_asm_statement(struct parse_context *ctx, if (_parse_identifier(ctx, &p)) { return -1; } - if (_parse_asm_arguments(ctx, &p)) { - return -1; - } + /* optional arguments */ + _parse_asm_arguments(ctx, &p); if (_parse_token(ctx, SL_PP_SEMICOLON, &p)) { return -1; } |