34 Commits

Author SHA1 Message Date
John Kessenich
ac666e7368 Front-end ESSL: require precision declarations for images. 2016-06-14 22:12:20 -06:00
John Kessenich
17f0786418 Parser: Precise: Recognize 'precise', tag types, and do related semantic checking.
This partly overlaps pull request #222, we have divided the work on this one.
2016-05-04 12:54:56 -06:00
John Kessenich
af459216a1 Correct precision qualification on built-in functions.
This is a replacement commit for pull request #238.

This is a design change, followed by implementation change that
A) fixes the changes caused by the design change, and
B) fixes some cases that were originally incorrect.

The design change is to not give built-in functions default precision qualification.
This is to allow the rule that the precision of some built-in functions adopt their
precision qualification from the calling arguments.  This is A above.

A consequence of this design change is that all built-ins that are supposed to have
an explicit precision qualifier must now be declared that way.  So, a lot more
built-in declarations now have precision qualifiers, just to keep things the same.
This is B above.
2016-05-03 19:34:00 -06:00
John Kessenich
cc16fa0720 Tests: Move to just linefeed to simply cross-platform test changes. 2015-12-10 18:01:54 -07:00
John Kessenich
1be8063e01 Require l-value patch-out indexing to be gl_InvocationID.
Also, generally allow ES variable indexing of in/out blocks.
2015-11-28 16:52:25 -07:00
John Kessenich
9312269d09 Front-end Arrays of arrays: Add ES-specific checks and tests. AoA should be quite close to done now. 2015-09-11 15:25:38 -06:00
John Kessenich
c8b2e36f52 Implement GL_KHR_blend_equation_advanced. 2015-08-30 05:43:51 -06:00
John Kessenich
0fc4338f3e Implement GL_OES_shader_multisample_interpolation, as well as core desktop versions of it. 2015-08-22 13:11:12 -06:00
John Kessenich
fc51d284aa Backward incompatible: Turn on PureOperatorBuiltins: use only enum-based built-in functions in the AST.
If this breaks your AST consumer, best is to modify it to test
against the enum values instead of doing string comparisons on
built-in function names.  This is the reason the change was made.

If you need the old behavior, you should be able to get it back by changing
PureOperatorBuiltins to be false instead of true.  This path will work for
a while, but is marked deprecated.

Also, the old behavior is tagged as release 2.4.
2015-08-19 13:43:25 -06:00
John Kessenich
e88217b7d8 Add more TOperator: fma/frexp/ldexp, AddCarry/SubBorrow/MulExtended/Bit*/Find*, (un)pack4x8/2x32, ftransform.
Also corrects some existing ones missing the "Op" part of their name.
2015-08-18 22:27:23 -06:00
John Kessenich
fb5ba510ca Implement GL_OES_shader_image_atomic. 2015-08-16 23:40:15 -06:00
John Kessenich
556ab3ac96 Implement GL_OES_sample_variables. 2015-08-16 21:55:59 -06:00
John Kessenich
2b0a11351f Fix two multi-sample bugs: 1) include MS in name mangling, 2) add 'sample' argument texelFetch(*MS*,...). 2015-08-16 21:04:07 -06:00
John Kessenich
dc9eff7221 Implement GL_OES_texture_cube_map_array. 2015-08-16 14:21:20 -06:00
John Kessenich
65c78a0b62 Array of array: Implement the core functionality: types, constructors, operations.
There will be subsequent commits to refine semantics, esp. version-specific semantics,
as well as I/O functionality and restrictions.

Note: I'm getting white-space differences in the preprocessor test results,
which I'm not checking in.  I think they need to be tagged as binary or something.
2015-08-10 17:08:55 -06:00
John Kessenich
e3933d684d Front-end: Implement GL_OES_gpu_shader5. 2015-07-15 19:42:59 -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
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
105704eff2 glslang: Finish turn on of AEP geometry shaders for ES 3.1.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31532 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-19 06:28:59 +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
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
dff18a2be0 glslang: Formally track all built-in variables, right from the beginning, to enable avoiding all textual compares at any subsequent stage in the stack. (To be used in future check ins.)
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31224 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-05-18 16:45:49 +00:00
John Kessenich
af9ab5f743 glslang parser: Arrays-of-arrays name-mangling and error messages (lots of A-of-A stuff to come a bit later). This patch from Google, David Neto <dneto@google.com>.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31137 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-05-11 16:16:49 +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
8b37b04ecc glslang AST output: include global vs. temp (local) in the printed output. This only effects test results, but a future check-in is going to fix some globals.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@30973 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-04-29 10:16:56 +00:00
John Kessenich
1575e0d7c7 Correct test result for previous check in.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@28969 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-11-17 16:46:15 +00:00
John Kessenich
c47175c7bb Add memory qualifiers (coherent volatile restrict) to imageSize(), imageLoad(), imageStore(), atomic*(), and imageAtomic*(), to remove errors about dropping qualifiers.
Several bugs are related to this, and this is a slightly speculative fix, bit it is certainly wrong to either do it the way it was or to reflect the current specifications.

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@28968 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-11-17 16:45:10 +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
f57aa7bd91 Add missing precision qualifier checks to function formal parameter declarations.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@28442 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-10-06 19:39:13 +00:00
John Kessenich
a3d8557a44 Turn on the sampler 2DMS types for ES 3.1.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27741 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-14 23:30:11 +00:00
John Kessenich
b3007519fc Miscellaneous ES 3.1 semantics, and identification of all missing features.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27732 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-14 07:07:21 +00:00
John Kessenich
be70339296 Add the bitField built-in functions. Mark 330 as being complete.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27728 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-13 20:04:19 +00:00
John Kessenich
df1d81a958 Add ES 3.1 compatibility to 4.5 and the atomic memory functions (e.g. atomicAdd).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27715 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-13 08:32:15 +00:00
John Kessenich
3dd035b68b Add ESSL 310 test results.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27711 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-12 22:08:45 +00:00