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
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
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.
John Kessenich [Wed, 9 Sep 2015 21:32:38 +0000 (15:32 -0600)]
Remove executables from the source tree. This addresses issue #48.
Jason Ekstrand [Sat, 5 Sep 2015 16:50:58 +0000 (09:50 -0700)]
SPIRV: Decorate matrices and arrays with their strides
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
John Kessenich [Sun, 30 Aug 2015 11:43:51 +0000 (05:43 -0600)]
Implement GL_KHR_blend_equation_advanced.
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.
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*.
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.
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.
John Kessenich [Wed, 19 Aug 2015 23:30:12 +0000 (17:30 -0600)]
Fix misspelled EOpFrexp and EOpLdexp.
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.
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.
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.
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.
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.
John Kessenich [Tue, 18 Aug 2015 07:35:08 +0000 (01:35 -0600)]
Turn on the gpu_shader5 of the AEP .tesc test.
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.
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().
John Kessenich [Mon, 17 Aug 2015 05:40:15 +0000 (23:40 -0600)]
Implement GL_OES_shader_image_atomic.
John Kessenich [Mon, 17 Aug 2015 03:55:59 +0000 (21:55 -0600)]
Implement GL_OES_sample_variables.
John Kessenich [Mon, 17 Aug 2015 03:10:38 +0000 (21:10 -0600)]
Implement GL_OES_texture_storage_multisample_2d_array.
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*,...).
John Kessenich [Sun, 16 Aug 2015 20:21:20 +0000 (14:21 -0600)]
Implement GL_OES_texture_cube_map_array.
John Kessenich [Sun, 16 Aug 2015 18:52:19 +0000 (12:52 -0600)]
Implement GL_OES_texture_buffer.
John Kessenich [Sun, 16 Aug 2015 17:38:07 +0000 (11:38 -0600)]
Implement GL_OES_primitive_bounding_box.
John Kessenich [Sun, 16 Aug 2015 17:35:30 +0000 (11:35 -0600)]
Whitespace in preprocessor results; trying to eliminate differences.
John Kessenich [Sun, 16 Aug 2015 17:07:50 +0000 (11:07 -0600)]
Merge pull request #56 from Psybrus/master
Fixed VS2015 build
Neil Richardson [Sat, 15 Aug 2015 15:29:37 +0000 (08:29 -0700)]
Fixed VS2015 build
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
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ā¦
Steve [Tue, 11 Aug 2015 15:20:14 +0000 (09:20 -0600)]
Add missing OpTypeSampledImage to prevent unknown type error from SPVRemapper.
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...
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.
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.)
John Kessenich [Fri, 7 Aug 2015 04:59:24 +0000 (22:59 -0600)]
Add new SPIR-V 31 files.
John Kessenich [Fri, 7 Aug 2015 04:53:06 +0000 (22:53 -0600)]
Move to revision 31 of SPIR-V.
John Kessenich [Fri, 7 Aug 2015 04:19:45 +0000 (22:19 -0600)]
Create last version before going to SPIR-V Revision 31.
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.
John Kessenich [Fri, 7 Aug 2015 04:02:24 +0000 (22:02 -0600)]
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
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)
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.
baldurk [Wed, 5 Aug 2015 18:54:58 +0000 (20:54 +0200)]
Compile fixes for gcc -Wall
baldurk [Wed, 5 Aug 2015 18:24:26 +0000 (20:24 +0200)]
Remove unsigned/size_t downcast (warning when building on x64)
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
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.
John Kessenich [Wed, 5 Aug 2015 16:29:23 +0000 (10:29 -0600)]
Merge pull request #46 from google/include-directive
#include directive support
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.
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.
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.
John Kessenich [Sat, 1 Aug 2015 03:22:43 +0000 (21:22 -0600)]
Merge branch 'master' of https://github.com/KhronosGroup/glslang
John Kessenich [Sat, 1 Aug 2015 03:20:53 +0000 (21:20 -0600)]
Update Linux binary
John Kessenich [Sat, 1 Aug 2015 03:15:54 +0000 (21:15 -0600)]
Update Window's binary
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.
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.
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.
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.
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.
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.
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.
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.
Lei Zhang [Tue, 28 Jul 2015 16:45:41 +0000 (12:45 -0400)]
Use const reference for TSourceLoc in interfaces.
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.
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.
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.
John Kessenich [Sun, 26 Jul 2015 00:14:09 +0000 (18:14 -0600)]
Issue #39: Prevent problem of inserting a zero-length symbol after cascading errors.
John Kessenich [Sat, 25 Jul 2015 23:34:32 +0000 (17:34 -0600)]
Preprocessor: Allow '\' as a token, which gets actual use in #error, but should have no other use.
This is just for '\' that's not before a new line.
Note the specification says it has no use other than as line continuation,
but #error is a grey area. (There are no escape sequences.)
John Kessenich [Sat, 25 Jul 2015 20:02:53 +0000 (14:02 -0600)]
Consolidate all token length limits (1024), including one bad one (80) hardcoded on the stack (issue #40, issue #41).
John Kessenich [Sat, 25 Jul 2015 18:51:02 +0000 (12:51 -0600)]
Merge pull request #44 from fkaa/osx-const-key-fix
Fix missing const qualifier on TUnorderedMap template type
Felix Kaaman [Sat, 25 Jul 2015 14:31:50 +0000 (16:31 +0200)]
Fix missing const qualifier on TUnorderedMap template type
John Kessenich [Fri, 24 Jul 2015 21:15:55 +0000 (15:15 -0600)]
Portability: Make previous merge work with MSVS 2012.
John Kessenich [Fri, 24 Jul 2015 21:05:17 +0000 (15:05 -0600)]
Merge pull request #38 from google/preprocessing-line-number
Preprocessing line number handling
Lei Zhang [Thu, 9 Jul 2015 20:58:42 +0000 (16:58 -0400)]
DoPreprocessing() should consider source string change.
Everytime we switch to a new source string, the line are reset.
We need to reset lastLine and also output newlines appropriately.
Lei Zhang [Wed, 15 Jul 2015 15:41:20 +0000 (11:41 -0400)]
Create a new class to keep track of line number in preprocessor.
SourceLineSynchronizer is added for keeping track of the last
line number and output newlines appropriately if we switch to
a new line in the preprocessor.
John Kessenich [Thu, 23 Jul 2015 16:25:20 +0000 (10:25 -0600)]
AST -> SPV testing: Update test for using new TbdFunctionality() that is non-fatal and uniquifies printed TBDs.
John Kessenich [Thu, 23 Jul 2015 16:22:48 +0000 (10:22 -0600)]
AST -> SPV: Add basic atomic_uint and atomic*() built-in function functionality.
John Kessenich [Thu, 23 Jul 2015 01:58:15 +0000 (19:58 -0600)]
Front-end atomics: Finish adding atomic built-in functions (non-image) into the AST.
John Kessenich [Wed, 22 Jul 2015 22:39:12 +0000 (16:39 -0600)]
Todo.txt: Added key, including notation for who's working on something.
John Kessenich [Wed, 22 Jul 2015 22:36:38 +0000 (16:36 -0600)]
Update Todo.txt.
John Kessenich [Wed, 22 Jul 2015 21:24:53 +0000 (15:24 -0600)]
Portability: Remove unneeded "= default" to work with older compilers.
John Kessenich [Wed, 22 Jul 2015 21:20:54 +0000 (15:20 -0600)]
Merge pull request #31 from google/explicit-extension-directive
Only output explicit extension directives in preprocessing.
John Kessenich [Wed, 22 Jul 2015 17:44:59 +0000 (11:44 -0600)]
Issue 32: Guard against constructors consuming unsized arrays.
John Kessenich [Wed, 22 Jul 2015 17:39:29 +0000 (11:39 -0600)]
Merge pull request #33 from google/spv-builder-loop-ctor-inits-all-members
spv::Builder::Loop constructor inits all members.
David Neto [Fri, 17 Jul 2015 21:11:22 +0000 (17:11 -0400)]
spv::Builder::Loop constructor inits all members.
After construction, the Loop is effectively const.
This perturbs the IDs in SPIR-V tests because the body block
is created before generating any of the loop code, rather than
only when the body is first referenced.
John Kessenich [Tue, 21 Jul 2015 22:00:34 +0000 (16:00 -0600)]
Issue #28: Correctly handle a single input argument conversion when the input argument is an aggregate.
Lei Zhang [Thu, 16 Jul 2015 22:34:55 +0000 (18:34 -0400)]
Only output explicit extension directives in preprocessing.
Preprocessing output shouldn't contain extensions enabled as
dependencies.
John Kessenich [Tue, 21 Jul 2015 20:35:39 +0000 (14:35 -0600)]
Issue #26: Detect empty array constructors, require at least on operand.
John Kessenich [Tue, 21 Jul 2015 06:07:52 +0000 (00:07 -0600)]
g++: Fix compilation issue with templates in g++.
John Kessenich [Tue, 21 Jul 2015 05:59:32 +0000 (23:59 -0600)]
Perf: Put in a portable std::hash that works with the pool. This turns on the 10-15% perf gain.
John Kessenich [Tue, 21 Jul 2015 04:34:49 +0000 (22:34 -0600)]
SPV: Make previous commit compile with MSVC 2012.
John Kessenich [Tue, 21 Jul 2015 04:14:38 +0000 (22:14 -0600)]
Merge pull request #22 from google/structured-do-while
Generate correctly structured do-while loops.
John Kessenich [Mon, 20 Jul 2015 18:29:41 +0000 (12:29 -0600)]
Preprocessor: Prevent (and give an error on) expression division by 0.
John Kessenich [Mon, 20 Jul 2015 18:03:04 +0000 (12:03 -0600)]
Tests: Increase testing around incorrect use of block names and instances.
John Kessenich [Mon, 20 Jul 2015 17:35:51 +0000 (11:35 -0600)]
Front end: Prevent use of a block name, which has no other use in a shader.
John Kessenich [Mon, 20 Jul 2015 08:06:22 +0000 (02:06 -0600)]
Fix g++ build break (portibility problems with stl hash). This partly turns off the stl improvements.
It also removes some old code that ancient compilers used to need.
However, the main issue is getting access to hash functions for
unordered_map in portable way.
John Kessenich [Sun, 19 Jul 2015 21:49:03 +0000 (15:49 -0600)]
Preprocessor: 1) Rationalize the "fixed atom" scheme, 2) remove redundant lookups when the text is already available.
This simplification is a prelude to eliminating what I appear unnecessary
symbol inserts into tables when tokenizing in the preprecessor, which
show up as taking notable time. (Performance issue.) It also simply makes
the preprocessor easier to understand, which it is badly in need of.
John Kessenich [Sun, 19 Jul 2015 04:34:27 +0000 (22:34 -0600)]
Performance: Simple upgrade/cleanup of stl c++11 containers (10% perf. increase).
John Kessenich [Sat, 18 Jul 2015 17:25:54 +0000 (11:25 -0600)]
Building: Fix a couple of new warnings.