platform/upstream/glslang.git
8 years agoMerge pull request #75 from google/fix-vs2013-debug
John Kessenich [Mon, 21 Sep 2015 16:00:42 +0000 (10:00 -0600)]
Merge pull request #75 from google/fix-vs2013-debug

SPV non-determinism: Fixed subtle issue that causes tests to fail in VS2013 in some configs.

8 years agoSPV: Remove old Rev. 30 header spirv.h (glslang has been using Rev. 31 spirv.hpp).
John Kessenich [Mon, 21 Sep 2015 14:59:47 +0000 (08:59 -0600)]
SPV: Remove old Rev. 30 header spirv.h (glslang has been using Rev. 31 spirv.hpp).

8 years agoFixed subtle issue that causes tests to fail in VS2013 in some configs.
Andrew Woloszyn [Fri, 18 Sep 2015 20:12:03 +0000 (16:12 -0400)]
Fixed subtle issue that causes tests to fail in VS2013 in some configs.

Depending on specific optimization settings VS2013 will sometimes
execute the operands to

new Instruction(builder.getUniqueId(), builder.makeBoolType(), OpPhi)

left-to-right, and sometimes right-to-left. Since makeBoolType can
also call getUniqueId(), the IDs to the OpPhi can sometimes be swapped.

This guarantees an explicit ordering of the Ids so that tests work
reliably.

8 years agoPP: Restore a line of code deleted by commit bb63bd5e3792455b77ce93e471158bed0cc884f0.
John Kessenich [Thu, 17 Sep 2015 00:23:20 +0000 (18:23 -0600)]
PP: Restore a line of code deleted by commit bb63bd5e3792455b77ce93e471158bed0cc884f0.

8 years agoSPV: Generate the LocalSize Execution Mode for compute shaders.
John Kessenich [Wed, 16 Sep 2015 22:04:05 +0000 (16:04 -0600)]
SPV: Generate the LocalSize Execution Mode for compute shaders.

8 years agoSPV: Minor corrections to previous big merge for images and atomics.
John Kessenich [Wed, 16 Sep 2015 16:54:31 +0000 (10:54 -0600)]
SPV: Minor corrections to previous big merge for images and atomics.

8 years agoMerge pull request #71 from amdrexu/mywork
John Kessenich [Wed, 16 Sep 2015 16:51:33 +0000 (10:51 -0600)]
Merge pull request #71 from amdrexu/mywork

SPIRV: Add image instruction support and atomic counter support.

8 years agoAdd new test case for image functions and fix issues caught by this test
Rex Xu [Wed, 16 Sep 2015 09:48:22 +0000 (17:48 +0800)]
Add new test case for image functions and fix issues caught by this test

8 years agoMerge master branch from upstream
Rex Xu [Wed, 16 Sep 2015 05:20:37 +0000 (13:20 +0800)]
Merge master branch from upstream

8 years agoMerge remote-tracking branch 'upstream/master'
Rex Xu [Wed, 16 Sep 2015 03:44:50 +0000 (11:44 +0800)]
Merge remote-tracking branch 'upstream/master'

8 years agoFix issues from review comments and those relevant to texelFetch
Rex Xu [Wed, 16 Sep 2015 03:44:02 +0000 (11:44 +0800)]
Fix issues from review comments and those relevant to texelFetch

8 years agoFull stack: implement textureQueryLod(*) and textureQueryLevels(*).
John Kessenich [Wed, 16 Sep 2015 01:38:56 +0000 (19:38 -0600)]
Full stack: implement textureQueryLod(*) and textureQueryLevels(*).

8 years agoUpdate the Todo.txt file with recent AEP, 3.1, and textureQuery progress.
John Kessenich [Wed, 16 Sep 2015 01:17:30 +0000 (19:17 -0600)]
Update the Todo.txt file with recent AEP, 3.1, and textureQuery progress.

8 years agoSPV OpAtomicCompareSwap: Generate correct operand order and number of operands.
John Kessenich [Tue, 15 Sep 2015 04:45:16 +0000 (22:45 -0600)]
SPV OpAtomicCompareSwap: Generate correct operand order and number of operands.

8 years agoSPV legacy texturing: Smear result of Op*Dref* up to a vector to match
John Kessenich [Tue, 15 Sep 2015 04:08:12 +0000 (22:08 -0600)]
SPV legacy texturing: Smear result of Op*Dref* up to a vector to match
the expectations of old GLSL shadow*() lookups.

8 years agoSPV return from main: Simplify a legacy design such returns are not jumps to exit...
John Kessenich [Tue, 15 Sep 2015 02:58:02 +0000 (20:58 -0600)]
SPV return from main: Simplify a legacy design such returns are not jumps to exit block.

Structured control-flow rules allow leaving the middle of a construct through
a return, but not through a jump to a block that does a return.

Addresses issue #58.

8 years agoBump up layout(location) limit from 62 to 4094, to handle bigger uniform locations.
John Kessenich [Mon, 14 Sep 2015 02:59:36 +0000 (20:59 -0600)]
Bump up layout(location) limit from 62 to 4094, to handle bigger uniform locations.

8 years agoMerge master branch from upstream
Rex Xu [Mon, 14 Sep 2015 02:38:56 +0000 (10:38 +0800)]
Merge master branch from upstream

8 years agoMerge remote-tracking branch 'upstream/master'
Rex Xu [Mon, 14 Sep 2015 02:15:54 +0000 (10:15 +0800)]
Merge remote-tracking branch 'upstream/master'

8 years agoSPV: Reduce spurious type generation by removing intermediate types in the middle...
John Kessenich [Sun, 13 Sep 2015 20:46:30 +0000 (14:46 -0600)]
SPV: Reduce spurious type generation by removing intermediate types in the middle of access chains.

This generally simplifies access chain generation, with far fewer  type conversions.
It is particularly important to future SPIR-V changes where there is less aggregate
type uniqueness due to carrying different layout information with the type.

8 years agoSPV arrays: Add support for runtime-sized array types and arrays of arrays.
John Kessenich [Sat, 12 Sep 2015 18:17:44 +0000 (12:17 -0600)]
SPV arrays: Add support for runtime-sized array types and arrays of arrays.

This includes run-time block.member.length() (OpArrayLength).

8 years agoFront-end Arrays of arrays: Add ES-specific checks and tests. AoA should be quite...
John Kessenich [Fri, 11 Sep 2015 21:25:38 +0000 (15:25 -0600)]
Front-end Arrays of arrays: Add ES-specific checks and tests.  AoA should be quite close to done now.

8 years agoSPV: Correct generation of transparent offsets for implicitly assigned offsets.
John Kessenich [Fri, 11 Sep 2015 21:15:23 +0000 (15:15 -0600)]
SPV: Correct generation of transparent offsets for implicitly assigned offsets.

8 years agoMerge pull request #1 from KhronosGroup/master
Rex Xu [Thu, 10 Sep 2015 04:06:48 +0000 (12:06 +0800)]
Merge pull request #1 from KhronosGroup/master

Sync local master branch from the upstream

8 years agoSPV: Only decorate array and matrix strides for transparent types requiring explicit...
John Kessenich [Wed, 9 Sep 2015 23:51:38 +0000 (17:51 -0600)]
SPV: Only decorate array and matrix strides for transparent types requiring explicit layouts.

8 years agoAdd test results for merge pull request #69.
John Kessenich [Wed, 9 Sep 2015 22:36:37 +0000 (16:36 -0600)]
Add test results for merge pull request #69.

8 years agoREADME: Update testing section.
John Kessenich [Wed, 9 Sep 2015 22:28:39 +0000 (16:28 -0600)]
README: Update testing section.

8 years agoMerge pull request #69 from jekstrand/texel-fetch
John Kessenich [Wed, 9 Sep 2015 22:33:45 +0000 (16:33 -0600)]
Merge pull request #69 from jekstrand/texel-fetch

SPIR-V: Add support for texelFetch

8 years agoUpdate test results for pull request #68, SPIRV: Decorate matrices and arrays with...
John Kessenich [Wed, 9 Sep 2015 22:19:15 +0000 (16:19 -0600)]
Update test results for pull request #68, SPIRV: Decorate matrices and arrays with their strides.

8 years agoMerge pull request #68 from jekstrand/stride-decorations
John Kessenich [Wed, 9 Sep 2015 22:12:35 +0000 (16:12 -0600)]
Merge pull request #68 from jekstrand/stride-decorations

SPIRV: Decorate matrices and arrays with their strides

8 years agoMerge pull request #66 from chadversary/cmake-dont-override-install-prefix
John Kessenich [Wed, 9 Sep 2015 21:52:29 +0000 (15:52 -0600)]
Merge pull request #66 from chadversary/cmake-dont-override-install-prefix

cmake: Don't override CMAKE_INSTALL_PREFIX

8 years agoMerge pull request #60 from xorgy/no-define-defined
John Kessenich [Wed, 9 Sep 2015 21:45:23 +0000 (15:45 -0600)]
Merge pull request #60 from xorgy/no-define-defined

Preprocessor:  'defined' cannot be used as a macro name in #define or #undef.

8 years agoRemove executables from the source tree. This addresses issue #48.
John Kessenich [Wed, 9 Sep 2015 21:32:38 +0000 (15:32 -0600)]
Remove executables from the source tree.  This addresses issue #48.

8 years agoSPIRV: Add the support of missing image functions #72
Rex Xu [Wed, 9 Sep 2015 08:42:49 +0000 (16:42 +0800)]
SPIRV: Add the support of missing image functions #72

8 years agoSPIRV: Token layout of OpAtomicXXX instructions is incorrect #70
Rex Xu [Sun, 6 Sep 2015 08:30:11 +0000 (16:30 +0800)]
SPIRV: Token layout of OpAtomicXXX instructions is incorrect #70

8 years agoSPIRV: Fix a comment issue
Rex Xu [Sun, 6 Sep 2015 06:55:45 +0000 (14:55 +0800)]
SPIRV: Fix a comment issue

8 years agoSPIRV: Add support for texelFetch
Jason Ekstrand [Sat, 5 Sep 2015 21:14:48 +0000 (14:14 -0700)]
SPIRV: Add support for texelFetch

There's nothing really special about texelFetch other than the opcode and
some restrictions so adding it is pretty trivial.

8 years agoSPIRV: Decorate matrices and arrays with their strides
Jason Ekstrand [Sat, 5 Sep 2015 16:50:58 +0000 (09:50 -0700)]
SPIRV: Decorate matrices and arrays with their strides

8 years agocmake: Don't override CMAKE_INSTALL_PREFIX
Chad Versace [Mon, 31 Aug 2015 21:27:04 +0000 (14:27 -0700)]
cmake: Don't override CMAKE_INSTALL_PREFIX

Stop forcing CMAKE_INSTALL_PREFIX="install". If the user manually set
CMAKE_INSTALL_PREFIX, then trust that he knows what he's doing.

This patch does NOT change the project's default value ("install") of
CMAKE_INSTALL_PREFIX.

Change-Id: I81b46dd1986427b498fe6316bed03f01689987d4

8 years agoImplement GL_KHR_blend_equation_advanced.
John Kessenich [Sun, 30 Aug 2015 11:43:51 +0000 (05:43 -0600)]
Implement GL_KHR_blend_equation_advanced.

8 years ago'defined' cannot be used as a macro name in #define or #undef.
Aaron Hamilton [Wed, 19 Aug 2015 21:04:18 +0000 (21:04 +0000)]
'defined' cannot be used as a macro name in #define or #undef.

8 years agoGL_OES_shader_multisample_interpolation: Include scalar swizzles as valid for interpo...
John Kessenich [Sat, 22 Aug 2015 22:54:35 +0000 (16:54 -0600)]
GL_OES_shader_multisample_interpolation: Include scalar swizzles as valid for interpolateAt*.

8 years agoImplement GL_OES_shader_multisample_interpolation, as well as core desktop versions...
John Kessenich [Sat, 22 Aug 2015 07:21:47 +0000 (01:21 -0600)]
Implement GL_OES_shader_multisample_interpolation, as well as core desktop versions of it.

8 years agoLink-check fix: Don't include built-in variables in the fragment output ES rule:
John Kessenich [Fri, 21 Aug 2015 15:19:52 +0000 (09:19 -0600)]
Link-check fix: Don't include built-in variables in the fragment output ES rule:

"No layout(location=) is required if there is only one output" should not count
built-in variables like gl_SampleMask.  This is fixed.

8 years agoFix misspelled EOpFrexp and EOpLdexp.
John Kessenich [Wed, 19 Aug 2015 23:30:12 +0000 (17:30 -0600)]
Fix misspelled EOpFrexp and EOpLdexp.

8 years agoBackward incompatible: Turn on PureOperatorBuiltins: use only enum-based built-in...
John Kessenich [Wed, 19 Aug 2015 19:34:18 +0000 (13:34 -0600)]
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.

8 years agoCreate last version before moving to pure enums for built-in functions.
John Kessenich [Wed, 19 Aug 2015 18:13:44 +0000 (12:13 -0600)]
Create last version before moving to pure enums for built-in functions.

8 years agoMore preparation for pure built-in functions as enums: Add texturing op cracker.
John Kessenich [Wed, 19 Aug 2015 16:46:52 +0000 (10:46 -0600)]
More preparation for pure built-in functions as enums: Add texturing op cracker.

8 years agoFront-end "pure" built-in TOperator: Finish adding full support, but still turned...
John Kessenich [Wed, 19 Aug 2015 05:17:15 +0000 (23:17 -0600)]
Front-end "pure" built-in TOperator:  Finish adding full support, but still turned off.

This is to avoid all need to do text comparison of built-in function names
when consuming the AST.  All built-in functions get enumerants.

Will want to turn on soon.  See PureOperatorBuiltins.  See issue #8.

8 years agoAdd more TOperator: fma/frexp/ldexp, AddCarry/SubBorrow/MulExtended/Bit*/Find*, ...
John Kessenich [Tue, 18 Aug 2015 23:00:37 +0000 (17:00 -0600)]
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.

8 years agoTurn on the gpu_shader5 of the AEP .tesc test.
John Kessenich [Tue, 18 Aug 2015 07:35:08 +0000 (01:35 -0600)]
Turn on the gpu_shader5 of the AEP .tesc test.

8 years agoMerge pull request #57 from google/glslang-android
John Kessenich [Mon, 17 Aug 2015 16:27:11 +0000 (10:27 -0600)]
Merge pull request #57 from google/glslang-android

Fixes for compiling glslang on Android.

8 years agoFixes for compiling glslang on Android.
Andrew Woloszyn [Mon, 17 Aug 2015 15:39:38 +0000 (11:39 -0400)]
Fixes for compiling glslang on Android.

Primarily fix is due to Android not supporting std::to_string().

8 years agoImplement GL_OES_shader_image_atomic.
John Kessenich [Mon, 17 Aug 2015 05:40:15 +0000 (23:40 -0600)]
Implement GL_OES_shader_image_atomic.

8 years agoImplement GL_OES_sample_variables.
John Kessenich [Mon, 17 Aug 2015 03:55:59 +0000 (21:55 -0600)]
Implement GL_OES_sample_variables.

8 years agoImplement GL_OES_texture_storage_multisample_2d_array.
John Kessenich [Mon, 17 Aug 2015 03:10:38 +0000 (21:10 -0600)]
Implement GL_OES_texture_storage_multisample_2d_array.

8 years agoFix two multi-sample bugs: 1) include MS in name mangling, 2) add 'sample' argument...
John Kessenich [Mon, 17 Aug 2015 03:04:07 +0000 (21:04 -0600)]
Fix two multi-sample bugs: 1) include MS in name mangling, 2) add 'sample' argument texelFetch(*MS*,...).

8 years agoImplement GL_OES_texture_cube_map_array.
John Kessenich [Sun, 16 Aug 2015 20:21:20 +0000 (14:21 -0600)]
Implement GL_OES_texture_cube_map_array.

8 years agoImplement GL_OES_texture_buffer.
John Kessenich [Sun, 16 Aug 2015 18:52:19 +0000 (12:52 -0600)]
Implement GL_OES_texture_buffer.

8 years agoImplement GL_OES_primitive_bounding_box.
John Kessenich [Sun, 16 Aug 2015 17:38:07 +0000 (11:38 -0600)]
Implement GL_OES_primitive_bounding_box.

8 years agoWhitespace in preprocessor results; trying to eliminate differences.
John Kessenich [Sun, 16 Aug 2015 17:35:30 +0000 (11:35 -0600)]
Whitespace in preprocessor results; trying to eliminate differences.

8 years agoMerge pull request #56 from Psybrus/master
John Kessenich [Sun, 16 Aug 2015 17:07:50 +0000 (11:07 -0600)]
Merge pull request #56 from Psybrus/master

Fixed VS2015 build

8 years agoFixed VS2015 build
Neil Richardson [Sat, 15 Aug 2015 15:29:37 +0000 (08:29 -0700)]
Fixed VS2015 build

8 years agoMerge pull request #54 from mknejp/master
John Kessenich [Tue, 11 Aug 2015 20:25:20 +0000 (14:25 -0600)]
Merge pull request #54 from mknejp/master

SPIR-V: Return undefined values from implicit returns instead of dummy

8 years agoMerge pull request #55 from srk-lunarg/v31_type_fixes
John Kessenich [Tue, 11 Aug 2015 20:24:34 +0000 (14:24 -0600)]
Merge pull request #55 from srk-lunarg/v31_type_fixes

Add missing OpTypeSampledImage to prevent unknown type error from SPVā€¦

8 years agoAdd missing OpTypeSampledImage to prevent unknown type error from SPVRemapper.
Steve [Tue, 11 Aug 2015 15:20:14 +0000 (09:20 -0600)]
Add missing OpTypeSampledImage to prevent unknown type error from SPVRemapper.

8 years agoSPIR-V: Return undefined values from implicit returns instead of dummy
Miro Knejp [Tue, 11 Aug 2015 00:45:24 +0000 (02:45 +0200)]
SPIR-V: Return undefined values from implicit returns instead of dummy

Previously if a non-void function implictly returned, a dummy variable
was created as return value. Now instead it returns the result of the
OpUndef instruction. This better conveys the presence of undefined
behavior to SPIR-V consuming tools (and humans).

It also saves one ID per occurrence...

8 years agoArray of array: Implement the core functionality: types, constructors, operations.
John Kessenich [Mon, 10 Aug 2015 23:08:55 +0000 (17:08 -0600)]
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.

8 years agoArray of Array prep: Turn a batch of 0's into nullptr or UnsizedArraySize.
John Kessenich [Sun, 9 Aug 2015 20:27:34 +0000 (14:27 -0600)]
Array of Array prep: Turn a batch of 0's into nullptr or UnsizedArraySize.

Added some const as well. This will remove camouflage of the next commit,
which will add the bulk of Array of Array semantics and functionality.
(Note the basic grammar and data structure is already in place.)

8 years agoAdd new SPIR-V 31 files.
John Kessenich [Fri, 7 Aug 2015 04:59:24 +0000 (22:59 -0600)]
Add new SPIR-V 31 files.

8 years agoMove to revision 31 of SPIR-V.
John Kessenich [Fri, 7 Aug 2015 04:53:06 +0000 (22:53 -0600)]
Move to revision 31 of SPIR-V.

8 years agoCreate last version before going to SPIR-V Revision 31.
John Kessenich [Fri, 7 Aug 2015 04:19:45 +0000 (22:19 -0600)]
Create last version before going to SPIR-V Revision 31.

8 years agoMerge pull request #53 from google/get-string-name-or-num
John Kessenich [Fri, 7 Aug 2015 04:06:34 +0000 (22:06 -0600)]
Merge pull request #53 from google/get-string-name-or-num

Add getStringNameOrNum() in TSourceLoc.

8 years agoFixes to 8f1684b7bb881813365efd013b05bc0900a52a0c, merge pull request 52.
John Kessenich [Fri, 7 Aug 2015 04:02:24 +0000 (22:02 -0600)]
Fixes to 8f1684b7bb881813365efd013b05bc0900a52a0c, merge pull request 52.

8 years agoMerge pull request #52 from baldurk/gcc-warn-fixes
John Kessenich [Fri, 7 Aug 2015 03:03:57 +0000 (21:03 -0600)]
Merge pull request #52 from baldurk/gcc-warn-fixes

Compile fixes for gcc -Wall

8 years agoMerge pull request #51 from baldurk/size-t-int-warning-fixes
John Kessenich [Fri, 7 Aug 2015 02:43:13 +0000 (20:43 -0600)]
Merge pull request #51 from baldurk/size-t-int-warning-fixes

Remove unsigned/size_t downcast (warning when building on x64)

8 years agoCreate a new method to return string name or number to DRY code.
Lei Zhang [Tue, 21 Jul 2015 19:18:40 +0000 (15:18 -0400)]
Create a new method to return string name or number to DRY code.

8 years agoCompile fixes for gcc -Wall
baldurk [Wed, 5 Aug 2015 18:54:58 +0000 (20:54 +0200)]
Compile fixes for gcc -Wall

8 years agoRemove unsigned/size_t downcast (warning when building on x64)
baldurk [Wed, 5 Aug 2015 18:24:26 +0000 (20:24 +0200)]
Remove unsigned/size_t downcast (warning when building on x64)

8 years agoMerge pull request #50 from google/remove-unused-code
John Kessenich [Wed, 5 Aug 2015 18:07:48 +0000 (12:07 -0600)]
Merge pull request #50 from google/remove-unused-code

Remove unused members from TPpContext

8 years agoRemove unused members from TPpContext.
David Neto [Fri, 24 Jul 2015 12:12:36 +0000 (08:12 -0400)]
Remove unused members from TPpContext.

The ErrMsg and ifloc members were unused or had no effect.

8 years agoMerge pull request #46 from google/include-directive
John Kessenich [Wed, 5 Aug 2015 16:29:23 +0000 (10:29 -0600)]
Merge pull request #46 from google/include-directive

#include directive support

8 years agoCreate a new ppRequireExtensions method for preprocessor.
Lei Zhang [Wed, 5 Aug 2015 15:56:14 +0000 (11:56 -0400)]
Create a new ppRequireExtensions method for preprocessor.

Now extensions required by preprocessor should be checked via
the ppRequireExtensions method. This is more clear and coherent
with the rest of the code.

8 years agoRevisioning: Include GLSL.std.450 version. Also, the revision.h script now includes...
John Kessenich [Sun, 2 Aug 2015 22:11:21 +0000 (16:11 -0600)]
Revisioning: Include GLSL.std.450 version.  Also, the revision.h script now includes redirection to revision.h.

8 years agoVersion reporting: Restart active use of revision.h, now based on a git tag.
John Kessenich [Sat, 1 Aug 2015 23:10:02 +0000 (17:10 -0600)]
Version reporting: Restart active use of revision.h, now based on a git tag.

The new make-revision script regenerates glslang/Include/revision.h,
used as it always has been, but made with a git-tag version and the
the number of commits on master.

I have a pre-commit hook that will automatically do this on master,
likely often enough to work in practice, without needing pull requests
to include it.

8 years agoMerge branch 'master' of https://github.com/KhronosGroup/glslang
John Kessenich [Sat, 1 Aug 2015 03:22:43 +0000 (21:22 -0600)]
Merge branch 'master' of https://github.com/KhronosGroup/glslang

8 years agoUpdate Linux binary
John Kessenich [Sat, 1 Aug 2015 03:20:53 +0000 (21:20 -0600)]
Update Linux binary

8 years agoUpdate Window's binary
John Kessenich [Sat, 1 Aug 2015 03:15:54 +0000 (21:15 -0600)]
Update Window's binary

8 years agoOutput wrapping #line directives for included content.
Lei Zhang [Mon, 6 Jul 2015 14:32:46 +0000 (10:32 -0400)]
Output wrapping #line directives for included content.

Also changed the includer interface to let it return the actual
full path of the included file.

8 years agoUpdate scanner in TParseContext when changing the input stream.
Lei Zhang [Sun, 5 Jul 2015 20:50:21 +0000 (16:50 -0400)]
Update scanner in TParseContext when changing the input stream.

After parsing a #include directive, we push a TokenizableString
which contains the content of the included file into the input
stack. Henceforth, tokens will be read from the newly pushed
TokenizableString. However, the scanner in TParseContext still
points to the previous input stream. We need to update the scanner
to point to the new input stream inside TokenizableString. Thus,
the setCurrent{String|Line|..} method in TParseContext updates
the status of the correct input stream. After finishing the newly
pushed TokenizableString, we need to restore the scanner to the
previous input stream.

8 years agoUse extension framework to enable #include directive.
Lei Zhang [Thu, 16 Jul 2015 21:33:10 +0000 (17:33 -0400)]
Use extension framework to enable #include directive.

This patch introduces a new extension, GL_GOOGLE_include_directive,
to enable support #include directives. It depends on the extension
GL_GOOGLE_cpp_style_line_directive.

8 years agoAdd #include processing to glslang (though turned off by default).
Dejan Mircevski [Wed, 17 Jun 2015 15:40:33 +0000 (11:40 -0400)]
Add #include processing to glslang (though turned off by default).

When an include directive is recognized by the preprocessor, it
executes a callback on the filepath argument to obtain the file
contents.  That way the compilation client can deal with the file
system, include paths, etc.

Currently only accepts quoted filepaths -- no angle brackets yet.

8 years agoMerge pull request #45 from google/source-string-name
John Kessenich [Fri, 31 Jul 2015 23:38:27 +0000 (17:38 -0600)]
Merge pull request #45 from google/source-string-name

Add mechanism for specifying names for source strings.

9 years agoAdd mechanism for specifying names for source strings.
Lei Zhang [Tue, 21 Jul 2015 14:23:43 +0000 (10:23 -0400)]
Add mechanism for specifying names for source strings.

Expose a new method setStringsWithLengthsAndNames() in the interface
which allows the caller to set descriptive names for source strings.
These names can be used in error messages.

9 years agoNon-functional: Slight change to the Google #include implementation to separate it...
John Kessenich [Wed, 29 Jul 2015 01:01:16 +0000 (19:01 -0600)]
Non-functional: Slight change to the Google #include implementation to separate it from AEP.

9 years agoMerge pull request #43 from google/cpp-style-line-directive
John Kessenich [Wed, 29 Jul 2015 00:55:44 +0000 (18:55 -0600)]
Merge pull request #43 from google/cpp-style-line-directive

Extend the syntax of #line and __FILE__ to support filename strings.

The implementation is done via introducing a new extension
GL_GOOGLE_cpp_style_line_directive using the extension framework.

The purpose is to support cpp-style #line directives, which is
required by #include.

9 years agoUse const reference for TSourceLoc in interfaces.
Lei Zhang [Tue, 28 Jul 2015 16:45:41 +0000 (12:45 -0400)]
Use const reference for TSourceLoc in interfaces.

9 years agoUse requireExtensions() to check extension and turn on more tests.
Lei Zhang [Tue, 28 Jul 2015 15:59:24 +0000 (11:59 -0400)]
Use requireExtensions() to check extension and turn on more tests.

Use requireExtensions() to check GL_GOOGLE_cpp_style_line_directive
is turned on. Add register more tests for running.

9 years agoExtend the syntax of #line and __FILE__ to support filename strings.
Lei Zhang [Thu, 25 Jun 2015 21:53:54 +0000 (17:53 -0400)]
Extend the syntax of #line and __FILE__ to support filename strings.

According to the GLSL spec, the second parameter to #line should be
an integer source string number and __FILE__ will be substituted
with the integer source string number currently processed. This
patch extends the syntax of #line and __FILE__. Now #line accepts
as the second parameter a filename string quoted by double quotation
marks. And if such a #line is set, __FILE__ will be substituted with
the currently set filename string. The implementation is done via
introducing a new extension GL_GOOGLE_cpp_style_line_directive using
the extension framework.

The purpose is to support cpp-style #line directives, which is
required by #include.

9 years agoScanning: 1) rationalize end-of-input everywhere, 2) prevent infinite loop at end...
John Kessenich [Mon, 27 Jul 2015 15:37:55 +0000 (09:37 -0600)]
Scanning: 1) rationalize end-of-input everywhere, 2) prevent infinite loop at end-of-input, 3) use positive chars.

Fixes issue #25. (char 255 aliased to -1 and missing tests for end of input).

1) All layers of input scanning now share a single EndOfInput value.
This avoids translation of it across layers of encapsulation.

2) Some places looking for end of line were not stopping on EndOfInput.

3) Use of "char" for the input made char values > 127 be negative numbers.
This allowed for aliasing of 255 to -1, etc.  This is fixed by using
unsigned char.