John Kessenich [Thu, 3 Oct 2013 20:23:57 +0000 (20:23 +0000)]
Document how to add a new feature enabled by an extension in Versions.cpp. Also reorganized slightly to localize related functions.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23376
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 2 Oct 2013 05:10:48 +0000 (05:10 +0000)]
Add the following ESSL 2.0 (#version 100) limitations to the configuration file, internal infrastructure, and test cases. Still need to implement the actual detection of non-inductive loops and array accesses. While and do-while loop detection is done.
nonInductiveForLoops
whileLoops
doWhileLoops
generalUniformIndexing
generalAttributeMatrixVectorIndexing
generalVaryingIndexing
generalSamplerIndexing
generalVariableIndexing
generalConstantMatrixVectorIndexing
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23323
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 2 Oct 2013 01:30:14 +0000 (01:30 +0000)]
Allow ES version 100 to redeclare built-in functions.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23322
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 1 Oct 2013 23:13:50 +0000 (23:13 +0000)]
Add message indicating level of completeness for not-yet-complete versions.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23313
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 1 Oct 2013 22:05:18 +0000 (22:05 +0000)]
Update Window's binary.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23311
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 1 Oct 2013 22:04:33 +0000 (22:04 +0000)]
Update Linux binaries
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23310
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 1 Oct 2013 21:58:43 +0000 (21:58 +0000)]
Add function recursion testing to the link-time validation.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23309
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Sat, 28 Sep 2013 04:02:08 +0000 (04:02 +0000)]
Add full support for uniforms with initializers, including intra-stage link validation of aggregate constant initializers.
This included
- encapsulating aggregate constants
- removal of constant-aggregate comparison algorithms, instead using a flattened and direct std::vector comparison
- adding structure type comparison for independently declared structures that still might match types
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23274
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 26 Sep 2013 00:53:10 +0000 (00:53 +0000)]
Fix g++ complaint with previous check in.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23247
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 26 Sep 2013 00:45:21 +0000 (00:45 +0000)]
Unify the 8 grammar productions for declaring variables. This greatly simplifies making changes for this set of productions.
This change also naturally picks up redeclarations of built-in arrays and the addition of the remaining linker objects of const, arrays, etc.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23246
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 24 Sep 2013 21:18:46 +0000 (21:18 +0000)]
Add basic intra-stage linking validation for matching types and qualification of uniforms/ins/outs/globals, function body duplication, and mixing ES/non-ES shaders.
Still need to handle arrays and built-in redeclarations, and many more rules, but this puts the basics in place.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23225
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 20 Sep 2013 06:20:21 +0000 (06:20 +0000)]
Test for and prevent any dead-code elimination, as all code is needed in the AST for static-use analysis.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23163
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 17 Sep 2013 22:44:35 +0000 (22:44 +0000)]
Update Linux binaries
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23109
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 17 Sep 2013 22:42:02 +0000 (22:42 +0000)]
Update the windows executable.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23108
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 17 Sep 2013 19:26:08 +0000 (19:26 +0000)]
Add optional configuration file for specifying (existing) limits. Details explained by usage statement. More limits to be added in the future.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23105
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 17 Sep 2013 18:45:24 +0000 (18:45 +0000)]
Basic infrastructure for redeclaring built-in variables (like gl_FragCoord) so shaders can change their type/layout.
A modifiable copy is made at the shader's global scope.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23103
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Sun, 8 Sep 2013 21:04:46 +0000 (21:04 +0000)]
Full thread safety working:
- don't use [] for map lookups, it can modify the map
- copy up built-in symbols out of shared symbol table levels before modifying them
- enforce shallow vs. deep TType copies
- combine maxArraySize with the array dimensions vector, encapsulate
- remove chaining of array types
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22953
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 6 Sep 2013 19:52:57 +0000 (19:52 +0000)]
Ensure the shared symbol table levels are read-only to make multi-threading safe. Also removed inadvertent extra copies of the symbol table shared across all stages.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22939
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 4 Sep 2013 21:19:27 +0000 (21:19 +0000)]
Add link validation infrastructure for multiple compilation units per stage. Includes a new, straightforward, C++ interface to the front end.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22927
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 3 Sep 2013 22:57:27 +0000 (22:57 +0000)]
Some rationalization of TIntermediate (to own it's own tree root) and TParseHelper for better encapsulation. Needed by some upcoming intra-stage link validation.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22914
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 3 Sep 2013 22:14:59 +0000 (22:14 +0000)]
Remove TIntermediate's dependency on infoSink, simplify folding of constant aggregates, and infoSink use in constant folding.
Added a few deep aggregate constant folding testing cases.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22912
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 3 Sep 2013 15:16:03 +0000 (15:16 +0000)]
Restore TDebugOptions, as code consuming this interface is still using it, even though the front-end proper no longer uses it.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22910
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Sat, 31 Aug 2013 02:41:30 +0000 (02:41 +0000)]
Option rationalization and minor clean up.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22907
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 30 Aug 2013 00:45:57 +0000 (00:45 +0000)]
Add more constant folding cases for min, max, step, smoothstep, mix, clamp, atan, and pow.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22903
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 29 Aug 2013 00:39:25 +0000 (00:39 +0000)]
Put all glslang internals (but not the external interface) into the glslang namespace.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22882
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 27 Aug 2013 05:57:15 +0000 (05:57 +0000)]
Move the complex pieces of C++ code from glslang.y to ParseHelper.cpp. Updated some tests.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22846
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 27 Aug 2013 03:59:04 +0000 (03:59 +0000)]
Give new scopes to non-compound (simple) if-then-else substatements, correcting scoping for declarations they contain.
Also, updated several tests and the Todo list.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22845
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 27 Aug 2013 03:43:13 +0000 (03:43 +0000)]
Remove unnecessary TString constructors.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22844
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 13 Aug 2013 00:58:49 +0000 (00:58 +0000)]
Dynamically allocate symbol table containers, so timing of clean up can be more easily controlled WRT memory pool cleanup.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22681
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 9 Aug 2013 20:31:43 +0000 (20:31 +0000)]
Share built-in symbols common to all stages for desktop (but still per profile per version).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22662
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 9 Aug 2013 17:14:49 +0000 (17:14 +0000)]
Put in infrastructure for tessellation, geometry, and compute stages, and partially flesh out with built-in functions.
Added the built-in functions EmitVertex(), EndPrimitive(), barrier(), memoryBarrier(), memoryBarrierAtomicCounter(), memoryBarrierBuffer(), memoryBarrierImage(), memoryBarrierShared(), and groupMemoryBarrier().
Have not added any new built-in variables.
Also changed the linear performance relateToOperator() to a high-performance version.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22659
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 8 Aug 2013 16:26:36 +0000 (16:26 +0000)]
Update Linux binaries for name-mangling bug fix
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22654
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 8 Aug 2013 16:22:54 +0000 (16:22 +0000)]
Remove a mangled-name cache in the type that was sometimes stale.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22653
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 6 Aug 2013 20:22:51 +0000 (20:22 +0000)]
Add parse-time constant folding for isinf() and isnan().
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22621
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 5 Aug 2013 17:11:37 +0000 (17:11 +0000)]
Update Linux binaries
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22605
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 5 Aug 2013 17:09:24 +0000 (17:09 +0000)]
Update the Windows binary.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22604
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 5 Aug 2013 16:36:49 +0000 (16:36 +0000)]
Linux abs() needs to be fabs(); a few other minor Linux tweaks.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22603
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 5 Aug 2013 15:52:03 +0000 (15:52 +0000)]
Track expected test results and add more README information.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22602
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Sun, 4 Aug 2013 23:51:37 +0000 (23:51 +0000)]
Allow unsigned int in the "location = " grammar, and generally improve recognition of numeric literals to be up to spec.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22597
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Sat, 3 Aug 2013 00:27:08 +0000 (00:27 +0000)]
Add windows executable.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22595
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Sat, 3 Aug 2013 00:16:49 +0000 (00:16 +0000)]
Add Linux executables
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22594
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Sat, 3 Aug 2013 00:04:10 +0000 (00:04 +0000)]
Set up infrastructure for installing an executable. Changes the standalone name to glslangValidator.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22593
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 1 Aug 2013 18:04:50 +0000 (18:04 +0000)]
Fix bison file naming issues from upgrading to version 2.7 of bison.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22578
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 31 Jul 2013 23:19:17 +0000 (23:19 +0000)]
Make previous check in compile correctly on linux.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22568
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 31 Jul 2013 18:44:13 +0000 (18:44 +0000)]
Improve multi-threading and move Standalone to a multi-threading model (currently off though).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22565
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 22 Jul 2013 22:31:08 +0000 (22:31 +0000)]
Update index.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22513
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 22 Jul 2013 22:29:42 +0000 (22:29 +0000)]
Push index page now that SVN access is setup.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22512
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 22 Jul 2013 07:53:37 +0000 (07:53 +0000)]
Put on hold pending configuring glslang for public access.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22491
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 22 Jul 2013 07:40:27 +0000 (07:40 +0000)]
Link glslang project into site nav.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22487
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 9 Jul 2013 23:57:13 +0000 (23:57 +0000)]
Fix warning in release build. Update to-do list.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22315
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 9 Jul 2013 17:23:39 +0000 (17:23 +0000)]
Tie missing default-precision error checks to EShMsgRelaxedErrors.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22304
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 8 Jul 2013 21:50:31 +0000 (21:50 +0000)]
Final linux tweak.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22294
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 8 Jul 2013 20:51:29 +0000 (20:51 +0000)]
A few linux improvements/fixes for the previous check in.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22292
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 8 Jul 2013 19:39:16 +0000 (19:39 +0000)]
Reframe the preprocessor as a C++ class, with instances, removing all C code, removing all global variables. Upgrade bison version to pass a parse context on through to the preprocessor. All the basic things to make something thread safe.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22291
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Sat, 6 Jul 2013 19:54:21 +0000 (19:54 +0000)]
Eliminate flex as the GLSL lexical analyzer, going from two nested lexical analyzers down to one, leaving just the preprocessor's lexical analysis. A new layer replaces it, to translate from the preprocessor's view of tokenization to glslang's view of tokenization.
Also:
- change source locations from an int to TSourceLoc (shader number, line number) throughout
- various improvements to the preprocessor
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22277
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 2 Jul 2013 20:18:59 +0000 (20:18 +0000)]
Rationalize naming/access to current thread-local-storage scheme. However, the preprocessor tokenizer is not thread-safe, so this may all change.
Also adding missing test.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22249
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 1 Jul 2013 17:56:24 +0000 (17:56 +0000)]
1) Don't propagate precision of built-in function arguments to return type when return type is bool (e.g., isnan).
2) Check an additional path for missing default precision qualification, except allow built-in declarations to pass the check.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22241
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 1 Jul 2013 04:54:28 +0000 (04:54 +0000)]
Fix bug dropping some qualifiers when merging with block member default qualification.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22240
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 28 Jun 2013 05:32:15 +0000 (05:32 +0000)]
Use the default of "smooth" for interpolation qualification for vertex outs and fragment ins (rather than all fragment IO).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22222
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 26 Jun 2013 23:41:30 +0000 (23:41 +0000)]
Fix preprocessor memory leak.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22195
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 26 Jun 2013 22:42:55 +0000 (22:42 +0000)]
Handle bad input file.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22194
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 26 Jun 2013 05:54:40 +0000 (05:54 +0000)]
Semantic checks for .length(), switch/case/default, and multidimensional arrays.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22175
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 25 Jun 2013 21:53:59 +0000 (21:53 +0000)]
Add semantic check for precision qualifier on wrong kind of type. Added a few more tests.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22170
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 25 Jun 2013 21:09:47 +0000 (21:09 +0000)]
Support line-continuation (backslash before newline) for tokens and one-line comments in the preprocessor.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22168
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 25 Jun 2013 18:31:47 +0000 (18:31 +0000)]
Remove the -a option, it doesn't belong here.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22166
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 25 Jun 2013 18:10:05 +0000 (18:10 +0000)]
Add scanner that can find '#version' across an array of non-null terminated, length-based, strings. Handle the ES error where #version is not the first thing found, while still supporting desktop behavior, and more generally support length-based multiple strings for a single shader.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22165
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 24 Jun 2013 22:40:19 +0000 (22:40 +0000)]
Add the 6 hyperbolic trig functions.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22149
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 24 Jun 2013 21:52:41 +0000 (21:52 +0000)]
Disallow variable indexing into sampler array for ES and desktop before version 400.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22148
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 24 Jun 2013 21:22:03 +0000 (21:22 +0000)]
Add semantic checks for order of qualification and repetition within a class of qualifiers.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22145
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 24 Jun 2013 18:24:23 +0000 (18:24 +0000)]
Address a g++ complaint.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22143
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 24 Jun 2013 17:26:56 +0000 (17:26 +0000)]
Create linkage symbol nodes in the AST so a linker has access to all global objects that were declared, for error checking, etc. Use it now for all ins/outs/uniforms as well as gl_VertexID and gl_InstanceID.
Also fixed a confusing name and added more 'const'.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22142
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 21 Jun 2013 19:43:44 +0000 (19:43 +0000)]
Fix bug of accidentally overriding initial layout location with 0, which does not mean no location. Added in/out structure tests.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22120
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 20 Jun 2013 22:54:40 +0000 (22:54 +0000)]
Add grammar productions for the syntax "layout(...) uniform;" for setting global defaults.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22112
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 19 Jun 2013 20:44:17 +0000 (20:44 +0000)]
Add grammar productions for adding 'invariant' to already declared variables.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22083
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 19 Jun 2013 05:41:25 +0000 (05:41 +0000)]
Track separate precision defaults for each kind of sampler, give initial defaults as per spec. Also make fragment floats have no default. Modify/add tests to adapt to these changes.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22066
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 17 Jun 2013 21:47:23 +0000 (21:47 +0000)]
Encapsulate warnings like errors. Add warning for missing #version.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22041
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 14 Jun 2013 17:32:46 +0000 (17:32 +0000)]
Fix linux build problem.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22002
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 13 Jun 2013 23:56:04 +0000 (23:56 +0000)]
Implement __VERSION__ macro, make ftransform() non-ES only, add more tests.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22000
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 13 Jun 2013 20:16:43 +0000 (20:16 +0000)]
Semantic checks: ES doesn't have unsized arrays or noise*().
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21998
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 13 Jun 2013 00:13:36 +0000 (00:13 +0000)]
Add semantic checks for nested blocks/structures.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21960
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 12 Jun 2013 22:41:21 +0000 (22:41 +0000)]
Simply compile-time error handling: mostly removed the need to test an error occurred and the need to call recover().
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21959
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 12 Jun 2013 06:13:17 +0000 (06:13 +0000)]
Get all the scoping rules right for ES and non ES, name hiding, built-in overriding, etc.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21948
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 11 Jun 2013 18:30:26 +0000 (18:30 +0000)]
Fix a linux build issue.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21945
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 11 Jun 2013 00:09:48 +0000 (00:09 +0000)]
Add constant folding for the exp*(), log*(), *sqrt(), round*(), floor(), fract(), ceil(), abs(), and sign() built in functions.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21927
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 10 Jun 2013 21:56:23 +0000 (21:56 +0000)]
Unify constant floats and constant doubles; they can all be constant doubles.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21921
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 10 Jun 2013 07:37:49 +0000 (07:37 +0000)]
Add constant folding for length(), normalize(), fwidth(), dFdx(), and dFdy().
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21918
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 10 Jun 2013 07:36:26 +0000 (07:36 +0000)]
A round of increasing robustness against buffer overruns.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21917
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 7 Jun 2013 19:07:39 +0000 (19:07 +0000)]
Add semantic check for ES variably indexing a uniform block.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21894
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 7 Jun 2013 18:54:19 +0000 (18:54 +0000)]
Add more tests for built-in variables.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21893
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 6 Jun 2013 18:31:21 +0000 (18:31 +0000)]
Block/structure fixes: Merge qualifiers with multiple declarators, handle arrays of blocks, more semantic checks for what's allowed.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21883
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Mon, 3 Jun 2013 04:15:57 +0000 (04:15 +0000)]
Fix another problem with undefined macros needing to evaluate to 0 within a preprocessor expression, but not outside a preprocessor expression.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21815
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Sun, 2 Jun 2013 22:57:37 +0000 (22:57 +0000)]
The new test that was to have been added with the previous check in.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21814
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 30 May 2013 23:31:38 +0000 (23:31 +0000)]
Add test for operation semantics, fix one bug it found.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21798
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Thu, 30 May 2013 19:15:35 +0000 (19:15 +0000)]
A bunch of semantic checks were missing for binary arithmetic operations. Refactor the "promote" logic to fix these.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21784
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Wed, 29 May 2013 22:40:31 +0000 (22:40 +0000)]
Change warning to error for use of double underscore.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21765
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 28 May 2013 07:29:58 +0000 (07:29 +0000)]
Add missing type check for operands having the same type (after conversion) around the ":" in a "?:" operation.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21721
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 17 May 2013 02:51:45 +0000 (02:51 +0000)]
Add precision qualifier propagation for swizzling, texture lookups, built-in funtions mapped to operators, comma op, and more robustly propagate for all binary/unary ops.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21622
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Tue, 7 May 2013 23:48:06 +0000 (23:48 +0000)]
Remove too aggressive and redundant lexical keyword check: attribute and varying can always be error checked in the grammar.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21443
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Sun, 5 May 2013 23:46:22 +0000 (23:46 +0000)]
Make the PP report an error on undefined macro in "#if ..." for ES profiles, unless relaxed error checking is requested. Still works as normal CPP on non-ES.
Also, improved error reporting in general for the PP.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21417
e7fa87d3-cd2b-0410-9028-
fcbf551c1848
John Kessenich [Fri, 26 Apr 2013 09:36:42 +0000 (09:36 +0000)]
Add 3 missing reserved keywords.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@21296
e7fa87d3-cd2b-0410-9028-
fcbf551c1848