Sorry, I found I have quoted the wrong place of spec. But the test is in git http://cgit.freedesktop.org/piglit/tree/tests/glslparsertest/glsl2/local-function-03.frag
quoted in spec section 4.2: Function declarations (prototypes) cannot occur inside of functions; The built-in functions are scoped in a scope outside the global scope users declare global variables in. That is, a shader's global scope, available for user-defined functions and global variables, is nested inside the scope containing the built-in functions. When a function name is redeclared in a nested scope, it hides all functions declared with that name in the outer scope. Function declarations (prototypes) cannot occur inside of functions; they must be at global scope, or for the built-in functions, outside the global scope, otherwise a compile-time error results. At 2013-11-25 15:54:50,"Chris Forbes" <[email protected]> wrote: >I'm not sure you quoted the bit of spec you intended to, but that test >looks pretty bogus at a first glance. > >-- Chris > >On Mon, Nov 25, 2013 at 8:08 PM, chris <[email protected]> wrote: >> Dear all, >> >> I run this test(glslparsertest/glsl2/local-function-03.frag),and I think it >> is may be bug of piglit. >> >> As spec, this test should be fail, but pass, since declaration function in >> not in global scope should be an error. >> >> Is there anyone noticed this test? >> >> // [config] >> // expect_result: pass >> // glsl_version: 1.10 >> // >> // # NOTE: Config section was auto-generated from file >> // # NOTE: 'glslparser.tests' at git revision >> // # NOTE: 6cc17ae70b70d150aa1751f8e28db7b2a9bd50f0 >> // [end config] >> >> /* PASS - local function declarations are not allowed in GLSL 1.10. */ >> #version 110 >> void main() { >> float foo(float x); >> gl_FragColor = vec4(0.0, foo(0.5), 0.0, 1.0); >> } >> >> float foo(float x) { >> return x + 0.5; >> } >> >> In glsl 1.1.0 section 6.1.1: >> The const qualifier cannot be used with out or inout, or a compile-time >> error results. The above is used >> both for function declarations (i.e., prototypes) and for function >> definitions. Hence, function definitions >> can have unnamed arguments. >> >> >> >> >> >> _______________________________________________ >> Piglit mailing list >> [email protected] >> http://lists.freedesktop.org/mailman/listinfo/piglit >>
_______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
