963 Commits

Author SHA1 Message Date
John Kessenich
0a6fb85494 Infrastructure: Make shared symbol-table cache complete, delete work around.
Fixes issue #370 and replaces PR #371.
2016-08-09 19:15:17 -06:00
steve-lunarg
c4a1307403 HLSL: add implicit promotions for assignments and function returns. 2016-08-09 13:48:47 -06:00
John Kessenich
426542ba57 Front-end: Fix issue #443: dvec3 uses only 2 components of second location. 2016-08-08 15:34:00 -06:00
John Kessenich
34177cd778 Tests: Test base case for fixing issue #443. 2016-08-08 15:29:25 -06:00
John Kessenich
4583b61e20 HLSL: Smear scalars to match vectors for relational operations.
Yield a vector relational compare and a vector result.
2016-08-07 19:14:22 -06:00
John Kessenich
267590d452 Whitespace: Nonfunctional: fix inconsistent white space, esp. no tabs. 2016-08-05 17:34:34 -06:00
John Kessenich
bbd1b0ef76 Tests: Add some location-decoration tests, to aid PR #422. 2016-08-05 15:19:46 -06:00
John Kessenich
66ec80e01b Build: C++ headers: Replace PR #366 with a more directed version. 2016-08-05 14:04:23 -06:00
John Kessenich
9f9bad09b4 PP: Add missing atoms that effect -E mode.
When preprocessing only, some tokens were emitted as <bad token>.
This fixes them to preserve their original content.

This supplants PR #182, with a correction and test results.
2016-08-04 22:46:19 -06:00
steve-lunarg
7dfcf4d1ad HLSL: Add GatherRed/Green/Blue/Alpha methods, inc 4-offset forms 2016-08-03 13:34:39 -06:00
John Kessenich
f6640761c4 Front-end: Implement 2nd task of issue #400; precision of result and operation.
From the ES spec + Bugzilla 15931 and GL_KHR_vulkan_glsl:
- Update precision qualifiers for all built-in function prototypes.
- Implement the new algorithm used to distinguish built-in function
  operation precisions from result precisions.
Also add tracking of separate result and operation precisions, and
use that in generating SPIR-V.
(SPIR-V cares about precision of operation, while the front-end
cares about precision of result, for propagation.)
2016-08-02 21:48:02 -06:00
John Kessenich
1176530bf5 SPV: Prevent issue #415 with better semantic checking. 2016-07-31 12:39:46 -06:00
John Kessenich
11e1a073f3 PP: Fix issue #407; handle empty identifier.
The sequence

  #define m()
  int m"

creates a token of no length (a string of 0 size).  Protect
against a string of 0 size as well as the existing protect
against a null string.
2016-07-30 13:39:52 -06:00
John Kessenich
7208473c69 PP: Non-functional; fix typos and blank spaces. 2016-07-30 13:25:33 -06:00
John Kessenich
73d4fb5bc5 PP: Fix issue #408: # as last character in macro.
This would look ahead for a second #, for token pasting, and if not
found, backup one token.  This is fine, unless at the end of line,
which would backup the #, rather than the look ahead.
2016-07-30 12:41:35 -06:00
John Kessenich
b38f071605 HLSL: Add back in the [subcomponent] part of a 'register' decl. 2016-07-30 10:30:51 -06:00
John Kessenich
ff13213547 Front-ends GLSL/HLSL: Fix initializer lists for structs of one member.
Single member structs initialized with an initializer list had
an incorrect argument for constructor emulation.
2016-07-29 18:29:06 -06:00
John Kessenich
96e9f47cbb HLSL: Implement the register production. 2016-07-29 14:28:39 -06:00
John Kessenich
82d6baf86f HLSL: Implement packoffset production. 2016-07-29 13:03:50 -06:00
John Kessenich
64076ed7e9 HLSL: Fix binary-expression associativity and termination issue. 2016-07-28 21:48:25 -06:00
John Kessenich
fea226ba43 HLSL: Add shape conversions for scalar -> vector assigments.
Also, this allows turning on the error check for a failed assigment
when parsing.

This makes 39 HLSL tests have a working assignment that was previously
silently dropped, due to lack of this functionality.
2016-07-28 18:41:20 -06:00
John Kessenich
a26a5170a3 Non-functional: Rationalize location and use of mapTypeToConstructor(). 2016-07-28 16:56:52 -06:00
John Kessenich
414f735443 Front-end: Fix issue #409, check for implicitly-sized binding arrays. 2016-07-27 14:55:06 -06:00
John Kessenich
e15509e450 Infrastructure: Address issue #414, build instructions. 2016-07-27 13:14:36 -06:00
John Kessenich
b783d712ab HLSL: Report failed assignments; some were silently not happening.
Starting out with this turned off, so tests can be locally fixed,
then will turn it on.
2016-07-27 10:31:11 -06:00
John Kessenich
8c8505c604 SPV: For AST interpolateAt* ops consuming a swizzle, invert the order.
Apply the interpolation first, then apply the swizzle to the result,
the inverse of the order requested by the AST.  This fixes issue #411.
2016-07-26 12:53:54 -06:00
John Kessenich
64723c20b5 Merge pull request #406 from steve-lunarg/pp_line
HLSL: enable #line extension by default for HLSL source.
2016-07-26 09:39:48 -06:00
John Kessenich
0c4702407c README: Fix numbered list. 2016-07-25 16:27:24 -06:00
John Kessenich
fd6b0fd51e README: Update the component list. 2016-07-25 16:21:08 -06:00
John Kessenich
3d157c510f HLSL: cbuffer and tbuffer grammar and production. 2016-07-25 16:05:33 -06:00
LoopDawg
6256146ef3 HLSL: enable #line extension by default for HLSL source. 2016-07-23 10:45:00 -06:00
John Kessenich
c8f6903b1d Front-end: Fix default layout(component) widths and correct for doubles.
Replaces PR #372.
2016-07-21 15:43:00 -06:00
John Kessenich
bc9e1d118a Infrastructure: Remove bad characters from file. 2016-07-21 15:41:10 -06:00
John Kessenich
5c08ecb419 Tests: line-number change only: make room for more component tests. 2016-07-21 15:39:23 -06:00
John Kessenich
2f003ac4e6 Merge pull request #393 from steve-lunarg/warning-enable
Build: Add g++/clang warnings to match some enabled by /W4 in MSVC
2016-07-21 14:46:21 -06:00
John Kessenich
75e547c0f2 Merge pull request #401 from steve-lunarg/samplers
HLSL: Add texture Load method & decomposition
2016-07-21 14:41:47 -06:00
John Kessenich
df018fa994 Merge pull request #398 from amdrexu/feature
AMD: Implement 4 AMD-specific extensions.
2016-07-21 14:39:27 -06:00
LoopDawg
6d478956ac Add g++/clang warnings to match some enabled by /W4 in MSVC. 2016-07-21 09:59:18 -06:00
LoopDawg
f245101954 HLSL: Add texture Load method & decomposition 2016-07-21 09:42:35 -06:00
John Kessenich
b84313dca1 Versions: Update version output.
Also, the per-build part had stopped auto-updating,
which is fixed locally as a git hook.
2016-07-20 16:03:29 -06:00
Rex Xu
9d93a2370d Implement 4 AMD-specific extensions.
- Support GL_AMD_shader_ballot (SPV_AMD_shader_ballot).
- Support GL_AMD_shader_trinary_minmax (SPV_AMD_shader_trinary_minmax).
- Support GL_AMD_shader_explicit_vertex_parameter
  (SPV_AMD_shader_explicit_vertex_parameter).
- Support GL_AMD_gcn_shader (SPV_AMD_gcn_shader).
2016-07-20 16:18:05 +08:00
John Kessenich
934855a642 Fix issue #382: Detect implicitly-sized atomic_uint arrays. 2016-07-19 15:50:58 -06:00
John Kessenich
f2cfe27021 Fix issue #388.
Protect more against error recovery of bad built-in variable redeclarations.
2016-07-19 15:13:47 -06:00
John Kessenich
31a51becd2 Fix issue #391: input stack underflow on too few macro arguments. 2016-07-19 14:32:52 -06:00
LoopDawg
5d58faecc0 HLSL: Add tx.GetDimensions method (uint returns only) 2016-07-18 16:40:21 -06:00
LoopDawg
a2b7991497 HLSL: Add SampleBias and SampleGrad, and associated tests 2016-07-15 11:38:49 -06:00
Lei Zhang
b1165f49d5 Reorder fields to avoid compiler initialization order error. 2016-07-15 11:25:28 -04:00
LoopDawg
4886f69734 HLSL: Sampler/texture declarations, method syntax, partial Sample method 2016-07-12 15:57:46 -06:00
John Kessenich
d8509b3367 Front-end: Implement compile-time constant folding for any() and all(). 2016-07-12 01:27:48 -06:00
John Kessenich
a86836ede2 Front-end: Fix known crashes by early exit on error (issue #29, issue #34, issue #35).
Added -C option to request cascading errors.  By default, will exit early,
to avoid all error-recovery-based crashes.

This works by simulating end-of-file in input on first error, so no
need for exception handling, or stack unwinding, or any complex error
checking/handling to get out of the stack.
2016-07-09 14:53:11 -06:00