Dejan Mircevski [Tue, 19 Jan 2016 21:47:41 +0000 (16:47 -0500)]
Merge branch 'topo' into loopgen-after-readable-order
Dejan Mircevski [Tue, 19 Jan 2016 19:52:31 +0000 (14:52 -0500)]
Reformat to better match existing style.
Dejan Mircevski [Tue, 19 Jan 2016 19:50:12 +0000 (14:50 -0500)]
(C) Google
Dejan Mircevski [Tue, 19 Jan 2016 19:08:32 +0000 (14:08 -0500)]
Explicitly initialize Instruction::block.
Dejan Mircevski [Tue, 19 Jan 2016 16:49:37 +0000 (11:49 -0500)]
Remove a redundant check before visit(succ).
Dejan Mircevski [Tue, 19 Jan 2016 16:44:53 +0000 (11:44 -0500)]
Add copyright, remove unused #includes.
Dejan Mircevski [Tue, 19 Jan 2016 16:31:55 +0000 (11:31 -0500)]
Make Instruction::getBlock() const.
Dejan Mircevski [Tue, 19 Jan 2016 15:17:33 +0000 (10:17 -0500)]
Fix merge issues.
Dejan Mircevski [Tue, 19 Jan 2016 15:01:27 +0000 (10:01 -0500)]
Rework inReadableOrder() as a recursive descent.
Add a test for unreachable merge block.
Update test results with the new order: mainly delaying merge blocks and
removing unreachable ones.
Dejan Mircevski [Mon, 18 Jan 2016 22:33:25 +0000 (17:33 -0500)]
Fix spv.branch-return.vert.
Dejan Mircevski [Mon, 18 Jan 2016 22:12:59 +0000 (17:12 -0500)]
Add spv.branch-return.vert and fix inReadableOrder().
Dejan Mircevski [Mon, 18 Jan 2016 21:18:37 +0000 (16:18 -0500)]
Implement inReadableOrder().
Dejan Mircevski [Mon, 18 Jan 2016 21:18:01 +0000 (16:18 -0500)]
Call addPredecessor() on OpSwitch blocks.
Dejan Mircevski [Mon, 18 Jan 2016 04:27:45 +0000 (23:27 -0500)]
Add Block::successors.
John Kessenich [Mon, 18 Jan 2016 18:11:46 +0000 (11:11 -0700)]
Merge branch 'master' of github.com:KhronosGroup/glslang
John Kessenich [Mon, 18 Jan 2016 18:10:40 +0000 (11:10 -0700)]
Memory: remove a part of the last merge request that causes crashes in multi-threaded mode.
John Kessenich [Mon, 18 Jan 2016 18:10:18 +0000 (11:10 -0700)]
Merge pull request #134 from AWoloszyn/glslangvalidator-memory
Freed up some command line memory (not used programmatically).
John Kessenich [Mon, 18 Jan 2016 17:48:07 +0000 (10:48 -0700)]
Merge pull request #133 from AWoloszyn/spirv-memory
Free memory associated with SPIR-V generation and the pragmaTable.
Andrew Woloszyn [Mon, 18 Jan 2016 14:23:56 +0000 (09:23 -0500)]
Free memory associated with SPIR-V generation.
Andrew Woloszyn [Mon, 18 Jan 2016 14:26:25 +0000 (09:26 -0500)]
Freed up some memory when no longer needed in glslangValidator.
John Kessenich [Sun, 17 Jan 2016 03:37:43 +0000 (20:37 -0700)]
Doubles: Add all the missing built-in double-based prototypes.
John Kessenich [Sat, 16 Jan 2016 22:30:03 +0000 (15:30 -0700)]
Memory/Perf: For link-mode, isolate file I/O so API can be looped over.
Separating file I/O from compile/link lets the compile/link be done
repeatedly in a loop for testing and measuring of performance and
memory footprint, including seeing memory growth over time for
functional-level memory-leak testing.
While the older compile-only mode already had this functionality,
and typically showed no memory leaks, SPIR-V uses the link path,
has pending "TODO" for memory freeing, and this shows several
kilobytes of leaking per compile-link. Most likely, pending
merge request 131 will address much of this.
John Kessenich [Fri, 15 Jan 2016 07:52:18 +0000 (00:52 -0700)]
Merge pull request #121 from amdrexu/feature
Parser & SPV: Implement two extensions regarding GLSL sparse texture.
John Kessenich [Thu, 14 Jan 2016 02:12:50 +0000 (19:12 -0700)]
Merge pull request #129 from AWoloszyn/fix-noop-strcpy
Preprocessor: Removed strcpy that copied a value to itself.
John Kessenich [Thu, 14 Jan 2016 02:11:05 +0000 (19:11 -0700)]
Merge pull request #126 from mgadams/win32_warnings
Fix several build warnings/error encountered with VS2013
John Kessenich [Thu, 14 Jan 2016 02:04:19 +0000 (19:04 -0700)]
Tests: Update to match previous pull request.
John Kessenich [Thu, 14 Jan 2016 01:59:31 +0000 (18:59 -0700)]
Merge pull request #130 from jekstrand/fix-std140-struct
linkValidate: Round up structure sizes to vec4 in std140
Jason Ekstrand [Thu, 14 Jan 2016 01:14:43 +0000 (17:14 -0800)]
getBaseAlignment: Use the rowMajor argument for determining matrix strides
The argument version is passed in from above and struct handling ensures
that row-majorness gets propagated correctly from one level to the next.
If we just look at the type itself and it's embedded in a struct that's
declared row-major, we may get the wrong stride.
Jason Ekstrand [Tue, 12 Jan 2016 21:04:52 +0000 (13:04 -0800)]
getBaseAlignment: Round up structure sizes to max alignment
Andrew Woloszyn [Tue, 12 Jan 2016 20:45:55 +0000 (15:45 -0500)]
Removed strcpy that copied to itself.
Found by running glslang with -fsanitize=address in clang.
Also fixes a potential buffer-overrun with return from lReadByte.
Dejan Mircevski [Mon, 11 Jan 2016 21:26:18 +0000 (16:26 -0500)]
Merge branch 'master' of github.com:google/glslang into loopgen
Change-Id: Ie8236430bb9e30a9be2e0c1573c42183c2f4d0d4
Dejan Mircevski [Mon, 11 Jan 2016 20:57:11 +0000 (15:57 -0500)]
Fix back-branch target for do-while loops.
To ensure back branches always go to a header block, create a header
block even for !testFirst loops. Then unify common code between the
testFirst/!testFirst cases.
Generate the header-block code first, so update golden files.
Realize that certain infinite loops generate invalid SPIR-V, so put a
TODO to instead abort code generation in such cases.
Change-Id: I1e173c8f73daad186cfc666b7d72bd563ed7665d
Dejan Mircevski [Mon, 11 Jan 2016 19:48:36 +0000 (14:48 -0500)]
Update .out files with new loop SPIR-V.
Also update breakForLoop and call builder.closeLoop() in code
generation.
Remove dead code.
Change-Id: Ic8ce5b208530f8787989ef45a2efa405f1b45310
Dejan Mircevski [Mon, 11 Jan 2016 14:35:22 +0000 (09:35 -0500)]
Switch loops stack to use LoopBlocks.
Also remove dead code.
Change-Id: I2c0177d8cab48b7d6f9442715aecb7951597f3c8
Dejan Mircevski [Mon, 11 Jan 2016 04:15:08 +0000 (23:15 -0500)]
Test a for loop with no body.
Change-Id: I5b53cc008349afad94b14500506fcab4d6e64d2e
Dejan Mircevski [Mon, 11 Jan 2016 00:37:00 +0000 (19:37 -0500)]
Fix unreachable-block removal.
Add a test for loop without a condition.
Change-Id: Idd7fc462218a84b1e745207e2975a3f2897d30a0
Dejan Mircevski [Sun, 10 Jan 2016 17:15:13 +0000 (12:15 -0500)]
First cut at new loop codegen.
Change-Id: Id3bdf8b7a5606e7ce5d856ef225d5ddbe59a584b
Mark Adams [Wed, 6 Jan 2016 18:41:02 +0000 (13:41 -0500)]
Fix several build warnings/error encountered with VS2013
This also fixes the newlines for spirv.hpp to be consistent with the rest of the files.
Rex Xu [Thu, 31 Dec 2015 08:11:41 +0000 (16:11 +0800)]
Parser & SPV: Implement two extensions regarding GLSL sparse texture.
Implement extension "GL_ARB_sparse_texture2".
Implement extension "GL_ARB_sparse_texture_clamp".
John Kessenich [Tue, 5 Jan 2016 06:49:03 +0000 (23:49 -0700)]
SPV: Handle type punning in createCompositeCompare().
John Kessenich [Tue, 5 Jan 2016 02:22:56 +0000 (19:22 -0700)]
SPV: Don't do stride decorations for arrays of arrays of blocks.
John Kessenich [Wed, 30 Dec 2015 04:27:24 +0000 (21:27 -0700)]
SPV: Handle stride decorations for arrays of arrays, and using multiple type instances when strides are used.
John Kessenich [Wed, 30 Dec 2015 00:11:44 +0000 (17:11 -0700)]
SPV: Fix array strides by explicitly computing them in the getBaseAlignment() algorithm.
John Kessenich [Thu, 24 Dec 2015 17:30:13 +0000 (10:30 -0700)]
SPV: Generalize multiple struct-type instances for interpolation/invariant qualifiers.
John Kessenich [Tue, 22 Dec 2015 23:39:07 +0000 (16:39 -0700)]
Semantics: Catch nested types containing 'int' with non-'flat' interpolation.
John Kessenich [Tue, 22 Dec 2015 04:21:11 +0000 (21:21 -0700)]
SPV: Don't make MissingFunctionality() exit anymore.
John Kessenich [Tue, 22 Dec 2015 03:54:09 +0000 (20:54 -0700)]
SPV: Implement composite comparisons (reductions across hierchical compare).
John Kessenich [Mon, 21 Dec 2015 18:45:34 +0000 (11:45 -0700)]
SPV: Move to deterministic results for OpEntryPoint, for test stability across platforms.
John Kessenich [Mon, 21 Dec 2015 00:37:07 +0000 (17:37 -0700)]
SPV: Make OpEntryPoint I/O list include all static uses.
Before, it was only including explicit interface, sufficient for IO-Block-declared
oriented interface, but not sufficient for all modes GLSL might be used with
SPIR-V.
Two things are accomplished now:
1) each id will appear exactly once
2) the OpEntryPoint list will union static use with declarations
John Kessenich [Sun, 20 Dec 2015 18:29:16 +0000 (11:29 -0700)]
SPV: recursively propagate row/col majorness through nested structures.
This includes doing structure uniqueness modulo majorness, for shared nested structures.
John Kessenich [Sat, 19 Dec 2015 20:57:10 +0000 (13:57 -0700)]
SPV: Nested layouts: Recursively send around the top-level std140 or std430 packing.
This also distinguishes between the same struct included in multiple parent packings.
John Kessenich [Sat, 19 Dec 2015 18:20:25 +0000 (11:20 -0700)]
Merge pull request #118 from amdrexu/bugfix
SPV: Fix an issue related with imageStore() for 2DMS.
John Kessenich [Sat, 19 Dec 2015 18:14:32 +0000 (11:14 -0700)]
Merge pull request #120 from amdrexu/bugfix2
Parser: Correct the storage qualifier of gl_HelperInvocation.
John Kessenich [Sat, 19 Dec 2015 18:10:56 +0000 (11:10 -0700)]
Merge branch 'master' of github.com:KhronosGroup/glslang
John Kessenich [Sat, 19 Dec 2015 18:08:02 +0000 (11:08 -0700)]
Merge pull request #117 from amdrexu/feature
SPV: Implement GLSL built-in bitcast functions.
John Kessenich [Sat, 19 Dec 2015 18:05:44 +0000 (11:05 -0700)]
John Kessenich [Sat, 19 Dec 2015 18:00:49 +0000 (11:00 -0700)]
Merge pull request #119 from thothonegan/master
Display the filename if we have output, even if validating a single file
John Kessenich [Tue, 15 Dec 2015 01:21:19 +0000 (18:21 -0700)]
Constant folding: Correct result type of non-square matrix folding.
This also made the function easier to read by identifying
left and right operands more clearly.
Rex Xu [Wed, 16 Dec 2015 06:41:39 +0000 (14:41 +0800)]
Parser: Correct the storage qualifier of gl_HelperInvocation.
Kenneth Perry [Tue, 15 Dec 2015 16:52:34 +0000 (10:52 -0600)]
Display the filename if we have output, even if validating a single file.
Rex Xu [Tue, 15 Dec 2015 09:52:45 +0000 (17:52 +0800)]
SPV: Fix an issue related with imageStore() for 2DMS.
Rex Xu [Tue, 15 Dec 2015 08:03:10 +0000 (16:03 +0800)]
SPV: Implement GLSL built-in bitcast functions.
John Kessenich [Tue, 15 Dec 2015 00:47:51 +0000 (17:47 -0700)]
Merge pull request #116 from mgadams/scan_compile_fix
Fix compile warning/error due to assignment in while() loop
Mark Adams [Mon, 14 Dec 2015 15:48:04 +0000 (10:48 -0500)]
Fix compile warning/error due to assignment in while() loop
This causes build failures with -Werror=parentheses
John Kessenich [Sun, 13 Dec 2015 20:34:37 +0000 (13:34 -0700)]
SPV GLSL.std.450: Add needed smear operations for min, max, clamp, mix, step, and smoothstep.
John Kessenich [Sun, 13 Dec 2015 19:23:33 +0000 (12:23 -0700)]
SPV texturing: Use comp. 2 as the 3rd comp. for Dref in ImageSampleProjDrefImplicitLod.
John Kessenich [Sun, 13 Dec 2015 18:20:12 +0000 (11:20 -0700)]
Fix crash: when no #version for compute shader in es mode.
An extra line of error recovery code set a non-sense combination of
es version and core profile.
John Kessenich [Sun, 13 Dec 2015 17:59:17 +0000 (10:59 -0700)]
Semantics: 'invocations' defaults to 1, not 0.
'invocations' was using 0 as the "shader never set" flag and as the
default. Formalize this and explicit set to 1 and link time.
John Kessenich [Sat, 12 Dec 2015 19:28:14 +0000 (12:28 -0700)]
SPV: Implement all matrix operators {+,-,*,/} for {matrix,scalar,vector}.
John Kessenich [Fri, 11 Dec 2015 22:44:12 +0000 (15:44 -0700)]
Semantics: Geometry stage can support max_vertices = 0.
To do this, more generally use a named -1 as a not set value.
John Kessenich [Fri, 11 Dec 2015 22:08:26 +0000 (15:08 -0700)]
SPV tests: Turn on some more tests related to currently pending issues.
John Kessenich [Fri, 11 Dec 2015 01:01:54 +0000 (18:01 -0700)]
Tests: Move to just linefeed to simply cross-platform test changes.
John Kessenich [Thu, 10 Dec 2015 19:01:41 +0000 (12:01 -0700)]
Linux: Fix case of test file.
John Kessenich [Thu, 10 Dec 2015 02:08:42 +0000 (19:08 -0700)]
SPV: Modify last merge: Have promoteScalar() generate the correct vectorType.
John Kessenich [Thu, 10 Dec 2015 01:47:48 +0000 (18:47 -0700)]
Merge pull request #115 from amdrexu/bugfix
SPV: Smear should use type of the scalar to make the expected vector type when the provided vector type is incompatible with the scalar.
John Kessenich [Thu, 10 Dec 2015 01:26:38 +0000 (18:26 -0700)]
Merge pull request #114 from amdrexu/bugfix2
Parser: Extension requirement of gl_PrimitiveID and gl_Layer should be checked only for ESSL instead of GLSL.
Rex Xu [Mon, 7 Dec 2015 11:07:17 +0000 (19:07 +0800)]
SPV: Scalar smear operation should use type of the scalar to make the
expected vector type when the provided vector type is incompatible with
the scalar.
Rex Xu [Mon, 7 Dec 2015 11:07:17 +0000 (19:07 +0800)]
Parser: Extension requirement of gl_PrimitiveID and gl_Layer should be checked only for ESSL instead of GLSL.
John Kessenich [Wed, 9 Dec 2015 03:48:49 +0000 (20:48 -0700)]
SPV: Protect getStorageClass() with a test that the thing is pointer.
John Kessenich [Wed, 9 Dec 2015 02:32:47 +0000 (19:32 -0700)]
SPV: Implement OpImage functionality (emit before query).
John Kessenich [Tue, 8 Dec 2015 21:45:01 +0000 (14:45 -0700)]
Merge pull request #113 from amdrexu/feature
SPV: Implement GLSL interpolation built-in functions.
John Kessenich [Tue, 8 Dec 2015 21:26:26 +0000 (14:26 -0700)]
Platforms: Remove support for Windows XP executables.
Dealing with the 110 toolset seems not worth it.
Rex Xu [Tue, 8 Dec 2015 09:12:09 +0000 (17:12 +0800)]
SPV: Implement GLSL interpolation built-in functions.
John Kessenich [Mon, 7 Dec 2015 22:03:16 +0000 (15:03 -0700)]
Merge pull request #111 from dneto0/issue-110-frexp-fix
Avoid read past end of operands vector for EOpFrexp
David Neto [Mon, 7 Dec 2015 21:17:06 +0000 (16:17 -0500)]
Avoid read past end of operands vector for EOpFrexp
When emitting SPIR-V code for frexp, avoid access
beyond the end of the operands vector. When constructing
the OpExtInst, construct a new arguments vector instead of
modifying the existing operands vector. In the case of OpFrexp,
well need that last operand later on to generate the store.
Fixes https://github.com/KhronosGroup/glslang/issues/110
Change-Id: Ibc380fadf5e600ac491932e9ecef7afe2d72fd7f
John Kessenich [Mon, 7 Dec 2015 02:33:07 +0000 (19:33 -0700)]
Built-ins: fix mapping of packDouble2x32 and unpackDouble2x32.
John Kessenich [Mon, 7 Dec 2015 02:29:11 +0000 (19:29 -0700)]
SPV: Fix extra operands when using the "struct" form of a built-in taking an 'out' param.
John Kessenich [Mon, 7 Dec 2015 02:17:49 +0000 (19:17 -0700)]
SPV: Distinguish between std140 and std430 layouts, and correctly use alignments as the base for strides.
John Kessenich [Mon, 7 Dec 2015 01:10:27 +0000 (18:10 -0700)]
Semantics: Correct that std430 is universally disallowed with 'uniform'.
John Kessenich [Mon, 7 Dec 2015 00:12:53 +0000 (17:12 -0700)]
Merge pull request #100 from mawww/scanner-optim
Scanner optimisations
John Kessenich [Sun, 6 Dec 2015 17:29:06 +0000 (10:29 -0700)]
Merge pull request #109 from xorgy/add-unary-math-check-for-null-before-dereferencing
In addUnaryMath, check for 'child' being null before dereferencing it.
Aaron Hamilton [Sun, 6 Dec 2015 01:10:54 +0000 (01:10 +0000)]
In addUnaryMath, check for 'child' being null before dereferencing it.
John Kessenich [Fri, 4 Dec 2015 00:57:35 +0000 (17:57 -0700)]
Merge pull request #107 from xorgy/fail-init-process-on-init-thread-fail
Fail InitProcess() when InitThread() fails.
John Kessenich [Fri, 4 Dec 2015 00:56:53 +0000 (17:56 -0700)]
Merge pull request #108 from mgadams/extensions_compile_fix
Fix ordered pointer comparison build warning/error
John Kessenich [Fri, 4 Dec 2015 00:46:03 +0000 (17:46 -0700)]
Build: Fix CMake files to find osinclude.h
John Kessenich [Fri, 4 Dec 2015 00:20:24 +0000 (17:20 -0700)]
Merge pull request #105 from phaulos/generic-osinclude
Use generic osinclude.h.
Mark Adams [Thu, 3 Dec 2015 20:31:58 +0000 (15:31 -0500)]
Fix ordered pointer comparison build warning/error
Aaron Hamilton [Wed, 2 Dec 2015 07:39:26 +0000 (07:39 +0000)]
InitProcess() should fail if InitThread() does.
Pyry Haulos [Tue, 1 Dec 2015 20:59:53 +0000 (12:59 -0800)]
Use generic osinclude.h
Using platform-neutral osinclude.h makes it easier to substitute
implementation when necessary and eliminates some variability between
build configurations.
John Kessenich [Sat, 28 Nov 2015 22:19:11 +0000 (15:19 -0700)]
Require l-value patch-out indexing to be gl_InvocationID.
Also, generally allow ES variable indexing of in/out blocks.