244 Commits

Author SHA1 Message Date
John Kessenich
f330f08129 Consolidate all token length limits (1024), including one bad one (80) hardcoded on the stack (issue #40, issue #41). 2015-07-25 14:02:53 -06:00
John Kessenich
96d8042a64 Merge pull request #31 from google/explicit-extension-directive
Only output explicit extension directives in preprocessing.
2015-07-22 15:20:54 -06:00
John Kessenich
12a383379c Issue 32: Guard against constructors consuming unsized arrays. 2015-07-22 11:44:59 -06:00
John Kessenich
8ba301c7c2 Issue #28: Correctly handle a single input argument conversion when the input argument is an aggregate. 2015-07-21 16:00:34 -06:00
Lei Zhang
1d2996db68 Only output explicit extension directives in preprocessing.
Preprocessing output shouldn't contain extensions enabled as
dependencies.
2015-07-21 17:47:47 -04:00
John Kessenich
efb8461722 Issue #26: Detect empty array constructors, require at least on operand. 2015-07-21 14:35:39 -06:00
John Kessenich
78a5a0d7d8 Front end: Prevent use of a block name, which has no other use in a shader. 2015-07-20 11:35:51 -06:00
John Kessenich
2b4b9bd65b Front-end: Add error-recovery code for a switch statement that ends with a case/default that has no statements. 2015-07-18 11:13:14 -06:00
John Kessenich
e3933d684d Front-end: Implement GL_OES_gpu_shader5. 2015-07-15 19:42:59 -06:00
John Kessenich
279012d8c4 Merge pull request #16 from google/pp-directive
Preprocessing directive handling
2015-07-14 19:36:29 -06:00
John Kessenich
fdfa6bbdfe Front-end: enforce qualifiers that cannot appear on block declarations.
Also seems to pick up some white-space (line-ending) test differences with a
prevoius checkin.
2015-07-14 19:30:11 -06:00
John Kessenich
4a22f9a4e2 Merge pull request #15 from google/preprocessing-error
Added error output to the preprocessor.

This patch distinguishes preprocessing errors with normal parsing
errors and gives glslangValidator the ability to output preprocessing
errors.
2015-07-14 15:29:13 -06:00
Andrew Woloszyn
aae1ad8296 Added error output to the preprocessor.
This patch distinguishes preprocessing errors with normal parsing
errors and gives glslangValidator the ability to output preprocessing
errors.
2015-07-14 16:02:25 -04:00
Lei Zhang
46ea5396ef Fix empty line handling in line directive callback.
The current line number for the #line directive should be passed
in as parameter to the line directive callback. Without it, we
don't know how many empty lines we should output.
2015-07-14 14:38:14 -04:00
Lei Zhang
5cbc990a0a Fix line number handling in line directive callback.
The line argument passed into the lineCallback function is the
literal value of the first argument of the #line directive.
lastLine in DoPreprocessing() should be updated taking into
consideration the different definitions for #line between specs.

Add a test to reveal the bug.
2015-07-14 14:37:59 -04:00
Lei Zhang
c4d20e0041 Simplify function calls for extensionsTurnedOn().
Lots of places in the code use extensionsTurnedOn(1, ...). This
patch introduces a new method, extensionTurnedOn(), for testing
if a single extension is turned on.
2015-07-14 11:26:52 -04:00
John Kessenich
68d78fd31e Updated command-line options, adding -o for saving binaries, -G for OpenGL SPIR-V validation, -v etc.
Old uses should still work as they did before.
Also encapsulated use of these flags during parsing, for the parse context.
Added SPIR-V version to -v.
2015-07-12 19:28:10 -06:00
John Kessenich
e0603a441e Front-end: move to rational internal array-of-array interfaces and design. (A-of-A is not yet implemented though.) 2015-07-06 21:00:03 -06:00
John Kessenich
9b0d9c8aa4 Use E_ prefix instead of _ for distinguishing extension strings from glext.h 2015-07-03 09:24:46 -06:00
Adam Jackson
93deac5295 Fix incompatibility with <GL/glext.h>
New extensions in glext.h follow the pattern:

    #ifndef GL_ARB_texture_rectangle
    #define GL_ARB_texture_rectangle 1
    #define GL_TEXTURE_RECTANGLE_ARB          0x84F5
    #define GL_TEXTURE_BINDING_RECTANGLE_ARB  0x84F6
    #define GL_PROXY_TEXTURE_RECTANGLE_ARB    0x84F7
    #define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
    #endif /* GL_ARB_texture_rectangle */

Versions.h tries to declare:

    const char* const GL_ARB_texture_rectangle = "GL_ARB_texture_rectangle";

Which means, if you've included glext.h before Versions.h, that the
compiler will see "const char* const 1 = ...", and rightly refuse to
continue.

The ham-fisted approach taken here is to rename the variables in
Versions.h with a leading underscore.  This does sort of undermine the
comment about "better to have the compiler do spelling checks", but.

Signed-off-by: Adam Jackson <ajax@redhat.com>
2015-06-30 10:11:38 -04:00
John Kessenich
1189a7bc4a Make double underscore "__" an error for ES 300, but a warning for 310.
The 310 spec (and desktop specs) have clarified this is a waring, not an
error, but 300 tests still expect an error.
2015-06-29 17:19:17 -06:00
John Kessenich
0e7674afa0 Make the "switch-label not followed by statement" warning an error, depending on version. 2015-06-26 12:24:28 -06:00
John Kessenich
b61b82182f glslang front-end: Implement AEP *_point_size extensions.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31560 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-23 04:14:00 +00:00
John Kessenich
6e76bdc88d glslang front-end: Full turn-on of AEP tessellation semantics.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31538 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-19 23:03:32 +00:00
John Kessenich
c555dddd53 glslang preprocessing: Add -E option to print out preprocessed GLSL, and do the work needed to generate a preprocessed stream. From Andrew Woloszyn <awoloszyn@google.com>.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31508 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-17 02:38:44 +00:00
John Kessenich
9288f46b95 glslang front-end: Added a callback mechanism for #line/#pragma/#version/#extension. From Andrew Woloszyn <awoloszyn@google.com>.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31507 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-16 23:08:00 +00:00
John Kessenich
47632b7aaf glslang front-end: track column numbers (they don't go anywhere yet, just get tracked). Andrew Woloszyn <awoloszyn@google.com>.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31506 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-16 19:49:22 +00:00
John Kessenich
9e41f362a6 glslang AEP: Full semantics for *_shader_io_blocks.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31490 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-15 15:08:41 +00:00
John Kessenich
f6deb6203a glslang AEP: Geometry shader features nominally working. (Full semantic check and turn on pending.) Also picked up partial tessellation shader interface, shader_io_blocks, and mirrored OES set of extensions functionality.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31487 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-14 21:36:44 +00:00
John Kessenich
93930d6f9a glslang ES reference: Don't allow std430 on uniform blocks (bug 14095).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31484 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-12 22:09:25 +00:00
John Kessenich
453bb26ef5 glslang AEP: The extension scheme, extension-enabled stage-existence testing, and compute-shader interface. Still needs in/out blocks, unsized arrays, etc. before real testing can be done.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31479 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-12 05:01:25 +00:00
John Kessenich
4751ce3fc1 glslang front-end: Support relaxed error checking for bug 13724 "...initializer must be a constant expression..." because that change breaks existing shipping applications. (Normal validation for portability testing still gives an error.)
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31475 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-11 16:39:01 +00:00
John Kessenich
fae38ee277 glslang portability: Fixed a slew of OSX compilation warnings (but not all).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31469 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-10 23:23:12 +00:00
John Kessenich
ca3457f1a7 glslang: Fix a few more warnings, and see it using nullptr causes anyone problems (testing c++11 portability).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31218 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-05-18 01:59:45 +00:00
John Kessenich
93dfbe1309 glslang: Fix over 100 warnings from MSVC warning level 4.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31202 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-05-15 17:30:55 +00:00
John Kessenich
bb8c3de8b3 glslang parser: Fix crash for ES shader with a uniform block with an unsized array that is later accessed. David Neto (dneto@google.com).
Instead of crashing, exit early from the implicit-sized-array-size-update routine so we can get to a real error message which is emitted later.


git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31109 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-05-08 00:54:34 +00:00
John Kessenich
a0096021d9 glslang parser: Fix precedence bug, submitted (as was the previous one) by Andrew Woloszyn (awoloszyn@google.com).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31103 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-05-07 16:23:04 +00:00
John Kessenich
968c8f8e78 glslang: Bug 13724: ES global initializers must be constant.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@30990 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-04-30 03:22:41 +00:00
John Kessenich
09388459a8 glslang: Correct global precision qualifiers to make the qualifier global instead of temp (local).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@30975 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-04-29 11:00:28 +00:00
John Kessenich
0df0cdeeeb glslangValidator: Add straightforward SPIR-V support (non-optimizing, ~3.x functionality).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@30032 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-03-03 17:09:43 +00:00
John Kessenich
50d542e6b9 Implement ES-3.0-specific error semantics for redefining predefined macros.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@29353 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-01-07 18:47:57 +00:00
John Kessenich
05a62bf528 Implement barrier() control-flow rules: in flow control, non-main, and post-return.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@29347 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-01-07 06:14:06 +00:00
John Kessenich
c311d35500 Fix default precision check for formal parameters; it was one level too deep. This will accept more fragment shaders with no default precision before declaring functions.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@29281 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-12-21 20:30:04 +00:00
John Kessenich
33a5423f76 Still generate switch statement when WARNING about missing statements is given. It was correct behave when this used to be an error, but not now that it is a warning.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@29279 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-12-21 16:48:29 +00:00
John Kessenich
6df2904391 Implement specification change in 'restrict', allowing it to come and go across function calls.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@29195 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-12-11 00:17:42 +00:00
John Kessenich
b07957cf22 ES check for vertex out or fragment in containing any of
• An array of arrays
• An array of structures
• A structure containing an array
• A structure containing a structure


git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@28745 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-10-28 05:24:14 +00:00
John Kessenich
f0fce80aa7 Do qualifier-based checking independent of declaring a variable. Bug 11903.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@28502 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-10-08 21:29:29 +00:00
John Kessenich
55901efb0d Nonfunctional: fix a typo.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@28194 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-09-18 13:12:00 +00:00
John Kessenich
da66bc7d29 Implement write-only semantic checking, the non-r32f/i/u readonly/writeonly check, and ES 3.1 support of volatile. Also, fix a typo in MaxComputeGroupY.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27765 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-19 20:32:48 +00:00
John Kessenich
d78ca6297d Implement atomic counter offset semantics.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27760 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-19 06:08:38 +00:00