From: Ian Romanick Date: Wed, 31 Mar 2010 19:31:18 +0000 (-0700) Subject: Require that 'uniform' and 'varying' variables be declared at global scope X-Git-Tag: mesa-7.9-rc1~1173^2~625^2~494 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b168e53452592ce7364a3ce46a6d30c5b746fc3b;p=platform%2Fupstream%2Fmesa.git Require that 'uniform' and 'varying' variables be declared at global scope This causes the following tests to pass: glslparsertest/shaders/uniform.frag glslparsertest/shaders/varying.frag --- diff --git a/ast_to_hir.cpp b/ast_to_hir.cpp index 7525461..874c11a 100644 --- a/ast_to_hir.cpp +++ b/ast_to_hir.cpp @@ -1208,13 +1208,22 @@ ast_declarator_list::hir(exec_list *instructions, instructions->push_tail(var); if (state->current_function != NULL) { - /* FINISHME: Variables that are uniform, varying, in, or - * FINISHME: out varibles must be declared either at global scope or - * FINISHME: in a parameter list (in and out only). + const char *mode = NULL; + + /* FINISHME: Variables that are in or out must be declared either at + * FINISHME: global scope or FINISHME: in a parameter list. */ if (this->type->qualifier.attribute) { + mode = "attribute"; + } else if (this->type->qualifier.uniform) { + mode = "uniform"; + } else if (this->type->qualifier.varying) { + mode = "varying"; + } + + if (mode) { _mesa_glsl_error(& loc, state, - "attribute variable `%s' must be declared at " + "%s variable `%s' must be declared at " "global scope", var->name); }