Rex Xu
30f9258d5e
Merge master branch from upstream
2015-09-14 10:38:56 +08:00
John Kessenich
fa668dad99
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.
2015-09-13 14:46:30 -06:00
John Kessenich
c9a808319a
SPV arrays: Add support for runtime-sized array types and arrays of arrays.
...
This includes run-time block.member.length() (OpArrayLength).
2015-09-13 10:18:19 -06:00
John Kessenich
a06bd527ca
SPV: Correct generation of transparent offsets for implicitly assigned offsets.
2015-09-11 15:15:23 -06:00
John Kessenich
31ed4830d1
SPV: Only decorate array and matrix strides for transparent types requiring explicit layouts.
2015-09-09 17:51:38 -06:00
John Kessenich
0487d550d1
Merge pull request #69 from jekstrand/texel-fetch
...
SPIR-V: Add support for texelFetch
2015-09-09 16:33:45 -06:00
Rex Xu
fc6189197d
SPIRV: Add the support of missing image functions #72
2015-09-09 16:42:49 +08:00
Rex Xu
d4782c10d4
SPIRV: Token layout of OpAtomicXXX instructions is incorrect #70
2015-09-06 16:30:11 +08:00
Jason Ekstrand
18b9fbd742
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.
2015-09-05 14:17:24 -07:00
Jason Ekstrand
54aedf1f66
SPIRV: Decorate matrices and arrays with their strides
2015-09-05 09:50:58 -07:00
John Kessenich
78258d3d40
Fix misspelled EOpFrexp and EOpLdexp.
2015-08-19 17:30: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
Andrew Woloszyn
8b64fa5474
Fixes for compiling glslang on Android.
...
Primarily fix is due to Android not supporting std::to_string().
2015-08-17 11:39:38 -04:00
John Kessenich
f99b7dde08
Merge pull request #54 from mknejp/master
...
SPIR-V: Return undefined values from implicit returns instead of dummy
2015-08-11 14:25:20 -06:00
Steve
3573f2e029
Add missing OpTypeSampledImage to prevent unknown type error from SPVRemapper.
2015-08-11 09:20:14 -06:00
Miro Knejp
28f9b1c28d
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...
2015-08-11 03:26:46 +02: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
6726cccc91
Add new SPIR-V 31 files.
2015-08-06 22:59:24 -06:00
John Kessenich
5e4b1242bf
Move to revision 31 of SPIR-V.
2015-08-06 22:55:01 -06:00
John Kessenich
306695360d
Fixes to 8f1684b7bb881813365efd013b05bc0900a52a0c, merge pull request 52.
2015-08-06 22:02:24 -06:00
baldurk
d7c5ead6a1
Compile fixes for gcc -Wall
2015-08-05 21:04:23 +02:00
John Kessenich
61d7d7ad73
Revisioning: Include GLSL.std.450 version. Also, the revision.h script now includes redirection to revision.h.
2015-08-03 12:04:56 -06:00
John Kessenich
426394d0c8
AST -> SPV: Add basic atomic_uint and atomic*() built-in function functionality.
2015-07-23 10:22:48 -06:00
John Kessenich
c040e76c58
Portability: Remove unneeded "= default" to work with older compilers.
2015-07-22 15:25:59 -06:00
David Neto
3e6a33cedf
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.
2015-07-22 12:24:21 -04:00
John Kessenich
96f4911351
SPV: Make previous commit compile with MSVC 2012.
2015-07-20 22:34:49 -06:00
John Kessenich
37e8337958
Merge pull request #22 from google/structured-do-while
...
Generate correctly structured do-while loops.
2015-07-20 22:14:38 -06:00
John Kessenich
2f273369e4
Performance: Simple upgrade/cleanup of stl c++11 containers (10% perf. increase).
2015-07-19 12:03:51 -06:00
David Neto
c22f37cfb4
Generate correctly structured do-while loops.
...
The loop test is always emitted before the loop body.
For do-while loops, use a phi node to track whether we're
on the first loop iteration, and only check the loop test
on the second and subsequent iterations.
For do-while loops, the loop test branch no longer occurs
at the top of the loop, so it must get its own selection
merge instruction.
A block can't be the target of more than one merge instruction.
So when the loop test executes after the body (as in do-while in GLSL)
we need to introduce a dummy block to be the target of the selection
merge just before the loop test conditional branch.
The other arm of the branch exits the loop and hence is the
"break block" exception in the structured control flow rules.
2015-07-17 17:51:51 -04:00
Steve
465a14666a
Comment out some dead assignments per suggestion from static analysis tools.
...
Code is left in as comments for clarity to humans.
2015-07-15 14:34:35 -06:00
John Kessenich
9e55f633bc
Include specification revision as part of the version string.
2015-07-15 10:03:39 -06:00
John Kessenich
eebb20511f
Merge pull request #11 from baldurk/size-t-int-warning-fixes
...
Fix warnings compiling on x64 with size_t to int casts
2015-07-14 12:25:55 -06:00
John Kessenich
f98ee23415
Fix incorrect used of snprintf()
2015-07-12 19:39:51 -06: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
baldurk
d76692dfb8
on x64, size_t is 64-bit and int is 32-bit, so needs an explicit cast
2015-07-12 11:32:58 +02:00
John Kessenich
1f654e1603
Merge pull request #4 from baldurk/relative-include-paths
...
include by relative path, so root doesn't need to be in the search path
2015-07-11 16:41:38 -06:00
Andre Weissflog
a5ade51363
Fix most clang warnings
...
- member initializing order in some constructors
- missing default branches in switch-case
- uninitialized variable if switch-case default (uncritical because
program would exit)
- && and || brace warnings in if()
2015-07-11 14:45:57 +02:00
baldurk
42169c5fee
include by relative path, so root doesn't need to be in the search path
2015-07-08 15:27:29 +02: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
ec43d0abec
glslang -> SPIR-V: smear scalars for integer (scalar * vector). OpVectorTimesScalar is only for floats.
2015-07-04 17:17:31 -06:00
Felix Kaaman
61deffd92a
Fix include directive depending on root folder name
2015-07-02 15:25:23 +02:00
John Kessenich
140f3df134
Final round for line endings.
2015-06-26 16:58:36 -06:00
John Kessenich
e5e0f6e37a
glslang -> SPV: swap arguments as needed for OpVectorTimesScalar and OpMatrixTimesScalar, and check for correct types for those as well as OpMatrixTimesVector, OpVectorTimesMatrix, and OpMatrixTimesMatrix.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31486 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-13 00:48:48 +00:00
John Kessenich
8d64d44c3f
glslang -> SPV: fix degenerate switch topologies (bug 14118).
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31485 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-12 22:34:37 +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
79eaa91e6f
glslang portability: Resolve OSX errors, some other OS warnings.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31468 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-10 22:05:48 +00:00
John Kessenich
3ef22f2139
SPV compressor: Fixes a possible asserts. Attribution: spvremapper@lunarg.com
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31451 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-06-09 02:01:53 +00:00
John Kessenich
06e1d0b434
glslang -> SPV: Improvements in swizzles on access chains: Bug 14007 (wrong type), simplications, tests, support mixed swizzle with dynamic component selection.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31277 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-05-22 21:57:58 +00:00
John Kessenich
6b3fd19d89
glslang -> SPV: add decorations for built-ins that are inside blocks.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31266 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-05-22 01:53:15 +00:00
John Kessenich
ea543986f9
glslang -> SPV: translate the source profile to the SPV source language.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31265 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-05-22 01:21:31 +00:00