Hans-Kristian Arntzen
70f17142de
GLSL: Fix nested legacy switch workarounds.
2020-06-30 12:02:24 +02:00
Hans-Kristian Arntzen
b1082c10af
Merge pull request #1410 from KhronosGroup/fix-1406
...
GLSL: Support switch more properly in legacy ESSL
2020-06-29 15:22:39 +02:00
Hans-Kristian Arntzen
4d79d634f5
GLSL: Implement switch on ESSL 1.0.
...
Cannot use switch on legacy ESSL, fallback to plain branches.
2020-06-29 13:35:46 +02:00
Hans-Kristian Arntzen
bae76d7915
GLSL: Use for-loop fallback instead of do/while for legacy ESSL.
...
do/while loops are not guaranteed to be supported in ESSL 1.0 / OpenGLES
2.0 implementations.
2020-06-29 12:50:31 +02:00
Hans-Kristian Arntzen
3afbfdb090
Implement context-sensitive expression read tracking.
...
When inside a loop, treat any read of outer expressions to happen
multiple times, forcing a temporary of said outer expressions.
This avoids the problem where we can end up relying on loop-invariant code motion to happen in the
compiler when converting optimized shaders.
2020-06-29 12:20:35 +02:00
Hans-Kristian Arntzen
05188aca69
Fix bug with control dependent expression tracking.
...
For a direct branch without merge, we lost control dependent
expressions.
2020-06-29 10:55:50 +02:00
Hans-Kristian Arntzen
eb0f0323d3
HLSL: Workaround FXC bugs with degenerate switch blocks.
...
When we see a switch block which only contains one default block, emit a
do {} while(false) statement instead, which is far more idiomatic and
readable anyways.
2020-06-23 15:39:04 +02:00
dan sinclair
0abc017501
Roll deps and update tests.
...
This CL rolls the GLSlang, SPIRV-Tools and SPIRV-Headers dependencies
and updates the various test files.
2020-06-22 09:33:29 -04:00
Hans-Kristian Arntzen
f141521ebe
Fix duplicated initialization for loop variables with initializers.
2020-06-19 10:51:00 +02:00
Hans-Kristian Arntzen
ace4d25222
MSL: Add test case for constructing struct with non-value-type array.
2020-06-18 12:55:59 +02:00
Hans-Kristian Arntzen
7314f51a32
MSL: Deal with loading non-value-type arrays.
2020-06-18 12:46:39 +02:00
Hans-Kristian Arntzen
02db4c1f16
MSL: Add tests for array copies in and out of buffers.
2020-06-18 11:59:02 +02:00
Hans-Kristian Arntzen
a64484f62b
Merge pull request #1392 from cdavis5e/msl-frag-input-vecsize
...
MSL: Fix up input variables' vector lengths in all stages.
2020-06-17 09:41:04 +02:00
Chip Davis
5281d9997e
MSL: Fix up input variables' vector lengths in all stages.
...
Metal is picky about interface matching. If the types don't match
exactly, down to the number of vector components, Metal fails pipline
compilation. To support pipelines where the number of components
consumed by the fragment shader is less than that produced by the vertex
shader, we have to fix up the fragment shader to accept all the
components produced.
2020-06-16 14:50:30 -05:00
Hans-Kristian Arntzen
d13dc0ce47
HLSL: Fix texProj in legacy HLSL.
2020-06-16 12:54:22 +02:00
Hans-Kristian Arntzen
f383cc98f2
GLSL: Handle the rest of GL_ARB_sparse_texture_clamp.
...
Missed these in initial sparse implementation.
2020-06-08 13:40:11 +02:00
Hans-Kristian Arntzen
857e1c445c
GLSL: Support uint code for sparse residency query.
2020-06-08 11:40:02 +02:00
Hans-Kristian Arntzen
553a7f959b
Merge pull request #1385 from KhronosGroup/fix-1237
...
GLSL: Implement sparse feedback.
2020-06-08 11:12:00 +02:00
Hans-Kristian Arntzen
275974e062
GLSL: Implement sparse feedback.
2020-06-04 15:50:28 +02:00
Hans-Kristian Arntzen
2d5200650a
HLSL: Add native support for 16-bit types.
...
Adds support for templated load/store in SM 6.2 to deal with small
types.
2020-06-04 12:33:56 +02:00
Hans-Kristian Arntzen
58dad82fcb
Handle physical pointers in reflection API.
2020-05-25 13:45:49 +02:00
Hans-Kristian Arntzen
ef247e75ec
GLSL: Improve support for GL_ARB_shader_draw_parameters in desktop GLSL.
...
Opt-in to using the extension to support gl_InstanceIndex.
2020-05-22 12:53:34 +02:00
dan sinclair
3d01d1bf50
Roll SPIRV-Tools, SPIRV-Headers and GLSLang.
...
This CL rolls the various dependencies and updates the test files.
2020-05-21 15:21:41 -04:00
Hans-Kristian Arntzen
287e93ff80
Merge pull request #1370 from dj2/roll_deps_20
...
Roll dependencies
2020-05-21 13:18:50 +02:00
dan sinclair
8bf916f575
Roll dependencies
...
This CL updates the GLSLang, SPIRV-Tools and SPIRV-Headers dependencies.
2020-05-20 10:27:51 -04:00
Hans-Kristian Arntzen
b4dd0b6fb1
GLSL: Add more test shaders for hit attribute types.
2020-05-20 15:07:50 +02:00
Hans-Kristian Arntzen
66ec3e3e54
GLSL: Support ray payloads and hit attributes declared as Block.
2020-05-20 15:07:47 +02:00
Hans-Kristian Arntzen
271ad33380
GLSL: Add some more focused RT test shaders.
2020-05-20 14:11:28 +02:00
Hans-Kristian Arntzen
f3a362b1aa
HLSL: Implement image queries for UAV images.
...
This was completely unimplemented for some reason.
2020-05-19 13:53:04 +02:00
Hans-Kristian Arntzen
86380acf4d
Support gl_InstanceID in RT shaders.
2020-05-08 13:39:43 +02:00
Hans-Kristian Arntzen
107ab7c2b7
MSL: Avoid packed arrays in more cases.
...
Extend the array stride relaxation to non-packed arrays as well, as
long as the array in question contains a single array element.
2020-05-06 10:27:12 +02:00
Hans-Kristian Arntzen
de3698f0e0
Add missing reference files from PR merge.
2020-05-06 10:08:01 +02:00
Le Hoang Quyen
9ddfe6db6d
Fix #1359 : MSL: If the packed type is scalar, don't emit "pack_" prefix.
...
Scalar type is already packed in metal.
2020-05-06 00:43:34 +08:00
Hans-Kristian Arntzen
0ebb88cc39
MSL: Redirect member indices when buffer has been sorted by Offset.
...
If a buffer rewrites its Offsets, all member references to that struct
are invalidated, and must be redirected, do so in to_member_reference,
but there might be other places where this is needed. Fix as required.
SPIR-V code relying on this is somewhat questionable, but seems to be
in-spec.
2020-04-30 11:48:53 +02:00
Hans-Kristian Arntzen
d7d630a0b7
Merge pull request #1347 from KhronosGroup/fix-1343
...
Implement OpAtomicLoad/OpAtomicStore.
2020-04-27 15:29:21 +02:00
Hans-Kristian Arntzen
9b7140e2ba
Implement OpAtomicLoad/OpAtomicStore.
...
Need some emulation on GLSL/HLSL, fix bug with atomic store on MSL.
2020-04-27 12:11:46 +02:00
Hans-Kristian Arntzen
6ef47d6657
MSL: Fix case where subpassInput is passed to leaf functions.
2020-04-27 11:29:21 +02:00
dan sinclair
171c646474
Roll GLSLang, SPIRV-Tools and SPIRV-Headers.
...
This CL rolls the various dependencies and updates tests to match.
2020-04-23 10:53:49 -04:00
Hans-Kristian Arntzen
5e5d1c27ce
GLSL: Support f16x2 <-> f32 bitcast.
...
There is no native formulation, so introduce a concept of a "complex"
bitcast to handle odd-ball cases which have no native unary operation.
2020-04-21 23:27:33 +02:00
Hans-Kristian Arntzen
bdb343ea06
Be a bit more careful what nonuniform state is propagated.
2020-04-21 14:48:44 +02:00
Hans-Kristian Arntzen
5cb0f0a640
Merge pull request #1335 from KhronosGroup/fix-1325
...
GLSL/HLSL: Implement unpack/pack2x32Uint
2020-04-21 14:05:12 +02:00
Hans-Kristian Arntzen
7b9cba7424
HLSL: Add parens in unpackUint2x32 for clarity.
2020-04-21 11:49:26 +02:00
Hans-Kristian Arntzen
a396744f89
Ensure unpack/pack2x32 tests are compatible with test suite.
2020-04-21 11:48:58 +02:00
Asuka
55dfbead2f
GLSL/HLSL: Support packUint2x32 and unpackUint2x32
2020-04-21 11:34:12 +02:00
Hans-Kristian Arntzen
f8592ecdfc
MSL: Deal correctly with initializers on Private variables.
...
Do not attempt to defer declaration. It would happen to work in most
cases, but the edge case is where the first thing that happens to a
variable is being OpStore'd into.
2020-04-21 11:20:49 +02:00
Hans-Kristian Arntzen
17ad62eea4
MSL: Support edge case with DX layout in scalar block layout.
...
DX may emit ArrayStride and MatrixStride of 16, but the size of the
object does not align with that and expect to pack other members inside
its last member.
The workaround is to emit array size/col/row one less than we expect and
rely on padding to carve out a "dead zone" for the last member.
2020-04-20 15:29:24 +02:00
Hans-Kristian Arntzen
ebf463674d
MSL: Allow removing clip distance user varyings.
...
Only safe if user knows that subsequent shader stage will not read clip
distance.
2020-04-20 09:58:40 +02:00
Panagiotis Christopoulos Charitos
b3109b8ad0
Reflection: Add specialization constant name
...
Fixes #1311
2020-04-18 22:00:36 +02:00
Chip Davis
96f7008aa8
MSL: Force disabled fragment builtins to have the right name.
...
DXVK emits SPIR-V where fragment shader builtins have names derived from
DXBC assembly, e.g. `oDepth` for `FragDepth`. When we declared the
disabled output, we used this name, but when referencing it, we
continued to use the GLSL name. This breaks compilation.
2020-04-15 19:25:18 -05:00
Chip Davis
495e48de44
MSL: Only disable output variables in fragment shaders.
...
Forgot to do this in #1319 .
Fixes #1322 .
2020-04-15 12:14:57 -05:00