glslang-zig/glslang/MachineIndependent/preprocessor
Chow 9eaa69c21c
Preprocessor related issue fix (#2378)
* Preprocessor related fix

1). Accoding to ESSL spec : All macro names containing two consecutive underscores ( __ ) are reserved for future use as predefined macro names, so just report a warning instead of error when the shader defines the macro names begining with  '__';

2. According to spec:  If an implementation does not recognize the tokens following #pragma, then it will ignore that pragma, so report a compile-time warning intead of error for the following statement:
#pragma debug(1.23)

3. The 'defined' macro should be allowed to expand and '__LINE__' should be allowed to be replaced with its original line number (otherwise, other expanding macros may change this value).

4. Add a flag 'indentifierSeen' in PPContext to indicate whether the any non-preprocessor tokens is existed before the extension directives, because the built-in symbols and functions are parsed before paring the user shader, so add a 'shaderSource' flag to check this error only for the user shader source;

5. Add missing type int16 and uint16.

* Add test results, remove restriction of #extension.

1. Remove extension restriction in first line , as this is contraversy now.

2. The following shader is compiled failed as glslang consider the keyword 'defined' can not be undefined(in the 9th line: "#define defined BBB")
The shader is as following:
According to ES3.0 spec: It is an error to undefine or to redefine a built-in (pre-defined) macro name.
This rule is aimed to the  __LINE__,  __FILE__, __VERSION__ and  GL_ES,
the keyword "defined" should not be restricted by this rule,
so change the compile error to warning and make the following shader compile successfully.

* 1. Using relaxedError to control error/warning report level. 2. remove #extension restriction. 3. Fix version related issue.

1. Using relaxedError to control error/warning report level. 2. remove #extension restriction. 3. Fix version related issue.

* Add test results

* Turn conditional warnings about pragma to unconditional ones.
2020-09-14 21:46:24 -06:00
..
Pp.cpp Preprocessor related issue fix (#2378) 2020-09-14 21:46:24 -06:00
PpAtom.cpp [lumped builds] Only define _CRT_SECURE_NO_WARNINGS if it’s not defined yet. 2017-05-10 16:52:50 +03:00
PpContext.cpp disable escape sequences for #line and #error 2020-03-09 21:09:18 -05:00
PpContext.h TPpToken: Fix compiling on clang-10 (#2189) 2020-04-22 08:19:43 -06:00
PpScanner.cpp EXT_debug_printf - make escape sequences better match C/C++ 2020-03-10 10:23:07 -05:00
PpTokens.cpp Web: Optional error management and error tightening. 2019-08-20 23:21:56 -06:00
PpTokens.h SPV: Implement Vulkan 1.1 features and extensions. 2018-03-06 16:12:04 -07:00