1077 Commits

Author SHA1 Message Date
John Kessenich
4329d555ad HLSL: Broaden solution for #940, editing integer input for 'flat'. 2017-06-21 01:35:57 -06:00
John Kessenich
f0bc598dd7 HLSL: Force flat interpolation for structure members. Fixes #940. 2017-06-20 13:19:53 -06:00
John Kessenich
fba125a988 Merge pull request #943 from xxxbxxx/for-upstream-1
hlsl: "in out" is also an inout qualifier.
2017-06-20 08:59:50 -06:00
John Kessenich
54596ff99e HLSL: Force flat (nointerp) onto integer fragment inputs.
Addresses #940.
2017-06-20 03:20:59 -06:00
xavier
b1d97537e8 hlsl: "in out" is also an inout qualifier. 2017-06-20 08:12:40 +02:00
John Kessenich
2fcdd64e50 HLSL: Remove support for named tbuffer/cbuffer. Fixes #939. 2017-06-19 15:41:11 -06:00
John Kessenich
054378d988 HLSL: Non-functional: Make test valid HLSL, and related comments/cleanup. 2017-06-19 15:32:27 -06:00
John Kessenich
e2ff404f6b Merge pull request #917 from KhronosGroup/remove-redundant-locations
Replace #422: Remove the redundant location setting in AST->SPIR-V.
2017-06-15 12:11:37 -06:00
John Kessenich
f790b16170 Tests: Fix missing test result. 2017-06-15 11:10:57 -06:00
John Kessenich
a931366f56 Standalone: Implement -D and -U for preprocessor macros.
Works for both GLSL and HLSL.
Fixes #87.
2017-06-15 10:57:18 -06:00
LoopDawg
e2713125b9 HLSL: fix several issues in mat construction from scalars
This fixes:

1. A compilation error when assigning scalars to matricies

2. A semantic error in matrix construction from scalars.  This was
initializing the diagonal, where HLSL semantics require the scalar be
replicated to every matrix element.

3. Functions accepting mats can be called with scalars, which will
be shape-converted to the matrix type.  This was previously failing
to match the function signature.

NOTE: this does not yet handle complex scalars (a function call,
say) used to construct matricies.  That'll be added when the
node replicator service is available.  For now, there's an assert.

There's one new test (hlsl.scalar2matrix.frag).  An existing test
lsl.type.half.frag changes, because of (2) above, and a negative
test error message changes due to (3) above.

Fixes #923.
2017-06-14 14:11:18 -06:00
John Kessenich
82ae8c31e0 HLSL: Fix #924: Convert between two different arrays with cast. 2017-06-13 23:13:10 -06:00
John Kessenich
0320d090e2 HLSL: Recognize types declared as identifiers as identifiers.
E.g., in

    float float;
    (float) * float;

The "(float)" is not a type cast, it is an expression.
2017-06-13 22:22:52 -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
4d5bcd3162 HLSL: Allow macro expansions to create the 'defined' operator. 2017-06-08 17:12:56 -06: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
dd56173d04 GLSL: Disallow 'shared' in nested scopes.
This implements Khronos-private specification bug 16130.
2017-06-08 10:13:15 -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
14d65beb06 GLSL: Fix Khronos private Bugzilla 15973: local sizes can't be 0. 2017-06-07 18:53:33 -06:00
John Kessenich
2eb135506a GLSL: Fix #396: Error when 'defined' comes from macro expansion. 2017-06-07 17:19:08 -06:00
John Kessenich
971a0a8d2d Infrastructure: add include search paths (-I, etc.). 2017-06-07 15:09:54 -06:00
John Kessenich
96f65521b4 HLSL: Implement half matrices, and map all half* -> float*. 2017-06-06 23:35:25 -06:00
John Kessenich
0e07119ae2 HLSL: Fix #919: for-init-statement is arbitrary declaration or expression.
Unlike "if (XXX)" and "while (XXX)", with "for (YYY...", the YYY can be
more kinds of statements than the XXX.
2017-06-06 11:37:33 -06:00
John Kessenich
e00e8f45a6 GLSL: replace general missing functionality with specific messages. 2017-06-05 16:42:33 -06:00
Rex Xu
225e0fcadd Implement the extension GL_AMD_texture_gather_bias_lod 2017-06-05 16:41:06 +08:00
John Kessenich
7cdf3fc3c6 Replace #422: Remove the redundant location setting in AST->SPIR-V.
This was redundant in two ways:
1) it replicated algorithms owned in the front end, and
2) it sometimes left location information on both a block and its members.
2017-06-04 13:22:39 -06: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
John Kessenich
0b94a31ee9 Merge pull request #915 from LoopDawg/subvec4-intrinsic
HLSL: add test coverage for sub-vec4 texture intrinsics
2017-06-03 15:28:11 -06:00
John Kessenich
f31507421b HLSL: Convert run-time sampler assignments to compile-time aliases.
For "s.m = t", a sampler member assigned a sampler, make t an alias
for s.m, and when s.m is flattened, it will flatten to the alias t.
Normally, assignments to samplers are disallowed.
2017-06-02 18:27:21 -06:00
John Kessenich
750c2d07f7 SPV: When passing structs of opaque types, flatten and pass the members instead.
This avoids either A) needing uniformConstant struct, or
B) initializing a struct with opaque members, as writing them is not
allowed.
2017-06-01 18:49:04 -06:00
John Kessenich
d66c5b1299 HLSL: iomapper: Fix #914. Tolerate user aliasing of bindings.
Because it is valid in HLSL to alias bindings:
A) remove validation that aliasing is not done
B) make the algorithms tolerate aliasing
2017-06-01 18:16:33 -06:00
LoopDawg
a696fd1a44 HLSL: add test coverage for sub-vec4 texture intrinsics
This changes no functional code.  There was a bit of a testing hole
in that textures templatized on sub-vec4 types were not being exercised
with any intrinsics.  This adds some basic sanity coverage of that case.
2017-06-01 13:28:12 -06:00
John Kessenich
3494b4da9b HLSL: Add an Includer to handle #include. 2017-06-01 11:16:32 -06:00
John Kessenich
e485c7af58 SPV: Debug output: Include OpLine information for execution path.
Note that declaratives are not handled, only procedurals.
2017-05-31 18:50:53 -06:00
John Kessenich
121853f4df SPV: Add OpSource shader source code and file name. 2017-05-31 17:14:15 -06:00
t.jung
baf570efa5 Pure Texture to Sampled Texture Transform
Adds a transformation step to the post processing step.
Two modes are available:
1) keep
- Keeps samplers, textures and sampled textures as is
2) transform pure texture into sampled texture and remove pure samplers
- removes all pure samplers
- transforms all pure textures into its sampled counter part

Change-Id: If54972e8052961db66c23f4b7e719d363cf6edbd
2017-05-29 18:29:45 +02:00
John Kessenich
d6af18f621 Merge pull request #901 from LoopDawg/imat-construct
HLSL: Add imat, umat, and bmat constructors
2017-05-24 23:12:58 -06: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
84cc15f0d0 HLSL: Fix #903: Don't short-circuit && or ||. 2017-05-24 16:47:32 -06:00
John Kessenich
6e2295d340 HLSL: Fix #902: Incorrect protection against zero arguments. 2017-05-24 16:02:56 -06:00
LoopDawg
174ccb8f1d HLSL: Add imat, umat, and bmat constructors
Fixes #894
2017-05-20 21:54:16 -06:00
John Kessenich
2c6f48b1f6 Fix #373: Implicitly make gl_FragColor a location=0 output. 2017-05-20 13:23:25 -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
557caf2401 Merge pull request #900 from LoopDawg/tx-overloads
HLSL: allow name mangling based on texture template type
2017-05-20 11:33:54 -06:00
John Kessenich
7b8c386c5d More non-determinism fixed. 2017-05-19 23:44:51 -06:00
John Kessenich
b6cabc4f24 Fix C++ portability, non-deterministic order of argument evaluation. 2017-05-19 23:29:50 -06:00
John Kessenich
80f92a190a Fix #857: Convert uniform int to local bool for struct alias assignment.
This was done for one direction, but not both directions, so this commit
picks up the other direction.
2017-05-19 23:00:13 -06:00
John Kessenich
0d2b4713c5 HLSL: Don't do logical short-circuits when the operands are bool-vectors.
This seems a bit ill-defined, and was generating code that made OpPhi of two
operands that were Boolean vectors result in a scalar bool.
2017-05-19 20:19:00 -06:00