543 Commits

Author SHA1 Message Date
David Srbecky
5513d9d0d8 Multiview extension: Accept layout(num_views) qualifier 2017-07-03 15:51:40 +01:00
John Kessenich
89400ea73e GLSL: validation of early_fragment_tests, others, on an object.
Some layout qualifiers must not be on an object and had a TBD for testing
them: early_fragment_tests, cw/ccw, points, point_mode, and
fractional_even_spacing/fractional_odd_spacing/equal_spacing.
2017-06-29 10:46:47 -06:00
John Kessenich
4be4aebdcd Infrastructure: Non-functional: Move to rich description of environment.
This is for input languages, client APIs, code to generate, etc.
2017-06-26 14:49:11 -06:00
John Kessenich
82ae8c31e0 HLSL: Fix #924: Convert between two different arrays with cast. 2017-06-13 23:13:10 -06:00
Rex Xu
cabbb788b4 Implement extension GL_AMD_gpu_shader_int16
- Add int16 types (int16_t, uint16_t, i16vec, u16vec).
- Add int16 support to GLSL operators.
- Add int16 type conversions (to int16, from int16).
- Add int16 built-in functions.
2017-06-09 17:11:23 +08:00
John Kessenich
3fcb42cfa6 GLSL: Fix #853: Only outer dimension of array can be specialization constant. 2017-06-08 12:26:49 -06:00
John Kessenich
d314ecfbe3 GLSL: Correct missing "not" from error message about non writeonly images. 2017-06-08 10:36:45 -06:00
John Kessenich
c5f2ab965f GLSL: Disallow unsized arrays of atomic_uint.
This tracks Khronos-private specification bug 15945.
2017-06-08 10:07:14 -06:00
John Kessenich
885443c788 Build: reset for multi-threaded test error, that reported a single missing character. 2017-06-07 19:03:11 -06:00
John Kessenich
14d65beb06 GLSL: Fix Khronos private Bugzilla 15973: local sizes can't be 0. 2017-06-07 18:53:33 -06:00
John Kessenich
9b2531ba23 Infrastructure: Move nesting counters, etc., to base class.
This lets all languages share the same definitions.
2017-06-06 19:53:24 -06:00
Jeremy Hayes
549764b5ec Build: Fix linux
I believe this is a repeat of 12d6936.
2017-06-06 15:52:50 -06:00
Rex Xu
225e0fcadd Implement the extension GL_AMD_texture_gather_bias_lod 2017-06-05 16:41:06 +08:00
John Kessenich
94c18a84cd GLSL: Fix bug setting component=0 for an auto-location assignment.
Setting component=0 is later taken to mean the shader did so, which
is not always legal. It should instead set the component as not set
by the shader.
2017-06-04 13:17:20 -06:00
John Kessenich
8de7e7bf14 GLSL: Error when using location on an arrayed block.
This implements a recent change to the GLSL specification to enforce
this ill-defined situation.
2017-06-04 13:05:50 -06:00
Rex Xu
0848cc0725 Parser: Add missing codes for float16 2017-06-01 19:59:20 +08:00
John Kessenich
7c9129bcb7 SPV: Fix #904: Correctly check for built-in block redeclations for location check. 2017-05-24 23:10:28 -06:00
John Kessenich
1d585ac8bd SPV: Correctly enforce 'location' presence on in/out blocks.
Blocks have this on members, not the object.
2017-05-20 12:15:41 -06:00
John Kessenich
71facdf435 SPV: Give error on not assigning locations to I/O.
Also, provides an option to auto-assign locations.
Existing tests use this option, to avoid the error message,
however, it is not fully implemented yet.
2017-05-18 15:07:05 -06:00
John Kessenich
670271890d SPV: Support test #pragma for generating the StorageBuffer storage class.
Longer term, this storage class should be generated based on the mode
of compilation.
2017-04-19 18:34:49 -06:00
John Kessenich
2184c2f21a Fix #287: pin down the io-array size before checking for out of range index. 2017-04-03 14:29:20 -06:00
John Kessenich
4dc835c369 Non-functional: Round of adding 'const', related to more efficient getFullNamespaceName(). 2017-03-30 10:16:22 -06:00
John Kessenich
aa3c64c214 Fix #800 (mostly): set of Linux warnings. 2017-03-28 09:52:38 -06:00
John Kessenich
33f85b6e59 SPV: Allow push constant buffers to not have an instance name. 2017-03-06 08:51:35 -07:00
John Kessenich
5a042c0686 GLSL: Fix #741: rationalize per-block vs. per-member offset checking. 2017-02-28 14:13:48 -07:00
Jason Ekstrand
f44d89a398 Implement GL_EXT_shader_image_load_formatted 2017-02-17 13:36:25 -08:00
John Kessenich
7225a1cb1e Support align/offset for all versions GLSL/ESSL targeting SPIR-V. 2017-02-13 09:09:04 -07:00
John Kessenich
02467d8d94 HLSL: Wrap the entry-point; need to write 'in' args, and support 'inout' args.
This needs some render testing, but is destined to be part of master.

This also leads to a variety of other simplifications.
 - IO are global symbols, so only need one list of linkage nodes (deferred)
 - no longer need parse-context-wide 'inEntryPoint' state, entry-point is localized
 - several parts of splitting/flattening are now localized
2017-02-06 22:58:32 -07:00
John Kessenich
62c3e400cf Fix bug from PR #678: NV_EXTENSIONS deleted implicit array sizing. 2017-01-26 22:03:57 -07:00
Henrik Rydgard
bec5fc898a Fix build if NV_EXTENSIONS is not set 2017-01-23 16:27:08 +01:00
chaoc
771d89fc36 support SPV_NV_viewport_array2 and SPV_NV_stereo_view_rendering 2017-01-20 16:48:26 -08:00
John Kessenich
e48b8d74e2 Infrastructure: remove potential memory leaks. 2017-01-19 15:30:56 -07:00
John Kessenich
c142c88967 Front-ends: Non-functional: Rationalize vector and matrix swizzles.
This reduces code duplication in a few ways, and better encapsulates
vector swizzle representation.
2017-01-13 19:35:29 -07:00
John Kessenich
927608b393 Non-functional: White space after "//", mostly for copyrights. 2017-01-06 12:34:14 -07:00
John Kessenich
ecba76fe73 Non-Functional: Whitespace, comments, replace accidentally deleted comment.
- fixed ParseHelper.cpp newlines (crlf -> lf)
- removed trailing white space in most source files
- fix some spelling issues
- extra blank lines
- tabs to spaces
- replace #include comment about no location
2017-01-06 11:24:14 -07:00
John Kessenich
bc5196c003 SPV: Fix issue #369, don't support gl_NumSamples -> SPIR-V. 2017-01-02 17:01:21 -07:00
John Kessenich
aa6d56298d HLSL: Handle const with no initializer. Fixes issue #651. 2016-12-30 16:42:57 -07:00
chaoc
6e5acae144 Add support for SPV_NV_geometry_shader_passthrough 2016-12-20 13:28:52 -08:00
chaoc
0ad6a4e60d Add support for SPV_NV_sample_mask_override_coverage 2016-12-19 16:29:34 -08:00
steve-lunarg
05f75142d6 HLSL: opcode specific promotion rules for interlocked ops
PR #577 addresses most but not all of the intrinsic promotion problems.
This PR resolves all known cases in the remainder.

Interlocked ops need special promotion rules because at the time
of function selection, the first argument has not been converted
to a buffer object.  It's just an int or uint, but you don't want
to convert THAT argument, because that implies converting the
buffer object itself.  Rather, you can convert other arguments,
but want to stay in the same "family" of functions.  E.g, if
the first interlocked arg is a uint, use only the uint family,
never the int family, you can convert the other args as you please.

This PR allows making such opcode and arg specific choices by
passing the op and arg to the convertible lambda.  The code in
the new test "hlsl.promote.atomic.frag" would not compile without
this change, but it must compile.

Also, it provides better handling of downconversions (to "worse"
types), which are permitted in HLSL.  The existing method of
selecting upconversions is unchanged, but if that doesn't find
any valid ones, then it will allow downconversions.  In effect
this always uses an upconversion if there is one.
2016-12-07 12:00:32 -07:00
John Kessenich
9df6aa5361 GLSL: Allow desktop shaders to call functions from outside main().
Fixes issue #239.
2016-12-05 21:36:48 -07:00
John Kessenich
509c4216e6 Non-functional: Fix typos. 2016-11-27 17:26:21 -07:00
John Kessenich
d3f1122a44 Whole stack: Fix stale types in the AST linker object nodes, fixing #557.
Rationalizes the entire tracking of the linker object nodes, effecting
GLSL, HLSL, and SPIR-V, to allow tracked objects to be fully edited before
their type snapshot for linker objects.

Should only effect things when the rest of the AST contained no reference to
the symbol, because normal AST nodes were not stale. Also will only effect such
objects when their types were edited.
2016-11-05 10:22:33 -06:00
Jeremy Hayes
c8e60e28b7 WIP: apply unused variable
I happened upon numArgs while hunting for unused variables. I suspect
the intent was to apply it as shown in this patch. However, I am not a
compiler dude. Someone more appropriate should grok this change.
2016-10-21 14:48:46 -06:00
John Kessenich
1fabc0f697 Merge pull request #548 from baldurk/vs2010-compile-fixes
VS2010 compile fixes
2016-10-15 23:09:31 -06:00
baldurk
54a28de4a9 Give all complex lambdas an explicit return type 2016-10-13 19:23:39 +02:00
steve-lunarg
b3da8a9cb3 HLSL: phase 2e: introduce lower level addBinaryNode/UnaryNode fns
- hlsl.struct.frag variable changed to static, assignment replacd.

- Created new low level functions addBinaryNode and addUnaryNode.  These are
  used by higher level functions such as addAssignment, and do not do any
  argument promotion or conversion of any sort.

- Two functions above are now used in RWTexture lvalue conversions.  Also,
  other direction creations of unary or binary nodes now use them, e.g, addIndex.
  This cleans up some existing code.

- removed handling of EOpVectorTimesScalar from promote()

- removed comment from ParseHelper.cpp
2016-10-12 12:39:44 -06:00
steve-lunarg
0de16da2c0 HLSL: phase 2c: use lValueErrorCheck in HLSL FE
This commit splits lValueErrorCheck into machine dependent and independent
parts.  The GLSL form in TParseContext inherits from and invokes the
machine dependent part in TParseContextBase.  The base form checks language
independent things.  This split does not change the set of errors tested
for: the test results are identical.

The new base class interface is now used from the HLSL FE to test lvalues.
There was one test diff due to this, where the test was writing to a uniform.
It still does the same indirections, but does not attempt a uniform write.
2016-10-12 12:39:44 -06:00
Alex Szpakowski
49ad2b72a1 Address some compiler warnings.
- Add explicit casts from long to int.
- Comment out method argument names that are unused.
- Always initialize a boolean variable before it's read.
2016-10-08 22:07:20 -03:00
John Kessenich
19bdf90eba SPV: Distinguish between SPV and non-SPV rules for member overlap. 2016-10-07 11:50:25 -06:00