Hans-Kristian Arntzen
c7b75a8fe6
MSL: Do not use base expression with PhysicalTypeID OpCompositeExtract.
...
Similar reasoning as packed expressions.
2020-04-07 18:25:44 +02:00
Hans-Kristian Arntzen
d9d3359ffb
MSL: Deal with cases where builtin is implicitly needed, declared, but unused.
...
We need to make sure any builtins which are declared and unused are
emitted as active variables.
2020-04-03 12:50:21 +02:00
Hans-Kristian Arntzen
3cb6aeb480
MSL: Fix access chain for deep struct hierarchy on array of buffers.
2020-03-31 14:17:29 +02:00
Hans-Kristian Arntzen
b8905bbd95
Add support for forcefully zero-initialized variables.
...
Useful to better support certain platforms which require all variables
to be initialized to something.
2020-03-26 13:38:27 +01:00
Hans-Kristian Arntzen
30343f3e95
MSL: Reintroduce workaround for constant arrays being passed by value.
2020-02-24 13:22:52 +01:00
Hans-Kristian Arntzen
af787a8a79
Merge pull request #1264 from KhronosGroup/msl-argument-buffer-persist
...
MSL: Add support for force-activating IAB resources.
2020-01-16 14:44:23 +01:00
Hans-Kristian Arntzen
c3bd136df1
MSL: Add support for force-activating IAB resources.
...
Important for ABI compatibility on MSL in certain cases.
2020-01-16 11:12:06 +01:00
Hans-Kristian Arntzen
f79c1e2fed
Deal with illegal names in types as well.
...
- Fixes issue with clip_distance flattening in MSL where member to
flatten from would come from to_member_name, where it should have used
the builtin name directly. This member name was modified by this patch
and broke clip distance test shaders.
- Some cleanups with ir.meta, use ir.find_meta instead to not create
unnecessary hashmap nodes.
2020-01-16 10:34:49 +01:00
Hans-Kristian Arntzen
2bbb012e9c
MSL: Deal with sign on wave min/max.
2020-01-09 12:35:18 +01:00
Hans-Kristian Arntzen
c024e24d45
MSL: Deal with padded fragment output + Component decoration.
2020-01-07 17:02:12 +01:00
Hans-Kristian Arntzen
93f3265fe0
MSL: Deal with packing vectors for vertex input/fragment output.
2020-01-07 14:14:31 +01:00
Hans-Kristian Arntzen
7a69d764b0
MSL: Add trivial tests for Component decoration.
...
Verifies that Component decoration is honored for vertex outputs and
fragment inputs.
2020-01-07 11:36:51 +01:00
Hans-Kristian Arntzen
8bef6ff167
Add test shader for OpCopyLogical with packing/unpacking.
2020-01-06 12:44:18 +01:00
Hans-Kristian Arntzen
9012a39b60
Basic implementation of OpCopyLogical.
2020-01-06 11:47:26 +01:00
Hans-Kristian Arntzen
d9afa9e238
MSL: Fix unpack_expression from column of padded matrix.
2019-11-07 11:35:07 +01:00
Hans-Kristian Arntzen
d4ca91f6c2
Move .invalid. test shaders to the more appropriate subfolders.
2019-11-06 10:40:37 +01:00
Dan Sinclair
d409210ee5
Move all .invalid shaders into no-opt folders.
2019-11-05 13:19:19 -05:00
Hans-Kristian Arntzen
3b5c4c7316
Implement constant empty struct correctly on all backends.
...
MSL actually supports empty structs, so enable that path as well.
2019-10-26 16:10:11 +02:00
Lukas Hermanns
c236ca4572
Moved all UE4 test shaders into 'shaders-ue4/' folder.
2019-10-23 17:39:05 -04:00
Lukas Hermanns
2482ff708c
Merge remote-tracking branch 'upstream/master'
2019-10-14 11:06:15 -04:00
Hans-Kristian Arntzen
07e9501ae1
MSL: Fix regression with OpCompositeConstruct from std140 float[].
...
Simple fix, just need to use to_unpacked_expression rather than to_expression here to
deal with this.
2019-10-11 11:21:43 +02:00
Lukas Hermanns
0853bcaee1
Disabled spvUnsafeArray<> type for packed vectors and added test cases for those arrays.
2019-10-09 17:59:47 -04:00
Hans-Kristian Arntzen
a0c13e4ee8
Do not consider aliased struct types if the master is not a block.
...
It is possible for a shader to declare two plain struct types which
simply share the same OpName without there being an implicit
value/buffer alias relationship.
For to_member_name(), make sure to use the type alias master when
resolving member names. The member name may be different in a type alias
master if the SPIR-V is being intentionally difficult.
2019-10-07 10:52:16 +02:00
Ryan Harrison
cf1bf1c6ae
Update external/ to SPIR-V 1.5
...
Rolled the hashes used for glslang, SPIRV-Tools, and SPIRV-Headers to
HEAD, which includes the update to 1.5.
Added passing '--amb' to glslang, so I didn't have to explicitly set
bindings in a large number of test shaders that currently don't, and
now glslang considers them invalid.
Marked all shaders that no longer pass spirv-val as .invalid.
2019-09-18 16:04:27 -04:00
Hans-Kristian Arntzen
0286442906
Add test case for interlocks in control flow.
2019-09-04 13:10:32 +02:00
Hans-Kristian Arntzen
65e48ca5ea
Add interlock test for split functions doing begin/end.
2019-09-04 12:26:34 +02:00
Hans-Kristian Arntzen
261b46982a
Deal with complex interlock cases in GLSL.
2019-09-04 12:18:04 +02:00
Hans-Kristian Arntzen
63a770ed5c
Add test shader for simple case of interlocked callstack.
2019-09-04 11:56:19 +02:00
Hans-Kristian Arntzen
9436cd3036
MSL: Deal with array copies from and to threadgroup.
2019-08-27 13:18:01 +02:00
Hans-Kristian Arntzen
b3305799a8
Deal correctly with sign on bitfield operations.
...
Need a lot of special purpose implementation functions for these.
2019-08-26 11:36:36 +02:00
Hans-Kristian Arntzen
abb345d0b3
MSL: Deal with Modf/Frexp where output is access chain to scalar.
...
This is not allowed as we cannot take mutable reference to a
vec.{x,y,z,w}. We only care about scalar since entire vectors are fine.
2019-07-26 11:02:38 +02:00
Hans-Kristian Arntzen
18bcc9b790
Do not disable temporary forwarding when we suppress usage tracking.
...
This subtle bug removed any expression validation for trivially swizzled
variables. Make usage suppression a more explicit concept rather than
just hacking off forwarded_temporaries.
There is some fallout here with loop generation since our expression
invalidation is currently a bit too naive to handle loops properly.
The forwarding bug masked this problem until now.
If part of the loop condition is also used in the body, we end up
reading an invalid expression, which in turn forces a temporary to be
generated in the condition block, not good. We'll need to be smarter
here ...
2019-07-23 19:18:44 +02:00
Hans-Kristian Arntzen
8ba0507a6d
Add another test for unpacking without load forwarding.
2019-07-23 17:14:59 +02:00
Hans-Kristian Arntzen
1ece67a050
Look at pointee type when unpacking expressions.
...
We might be unpacking in OpLoad, so don't want any pointer types from
access chains creeping in.
2019-07-23 17:07:15 +02:00
Hans-Kristian Arntzen
ebe109d91d
Deal correctly with non-forwarded packed loads.
...
Need to unpack the expression if we're not forwarding.
2019-07-23 16:25:19 +02:00
Hans-Kristian Arntzen
79f533b662
Test CompositeInsert/Extract/VectorShuffle on packed vectors.
2019-07-23 15:44:35 +02:00
Hans-Kristian Arntzen
5582145549
Add test for array of scalar struct.
2019-07-23 15:30:03 +02:00
Hans-Kristian Arntzen
5c1cb7accf
Recursively pack struct types when we find scalar packed structs.
2019-07-23 15:24:53 +02:00
Hans-Kristian Arntzen
0f10601f27
Test matrix multiplies in more complex scenarios.
2019-07-23 12:12:24 +02:00
Hans-Kristian Arntzen
978253c804
Test implicit packing of struct members.
2019-07-23 12:04:15 +02:00
Hans-Kristian Arntzen
fc741596d4
Add tests for struct padding and self-alignment.
2019-07-23 11:46:34 +02:00
Hans-Kristian Arntzen
7277c7ac46
Use to_unpacked_row_major_expression to unify row-major in MSL/GLSL.
2019-07-23 11:36:54 +02:00
Hans-Kristian Arntzen
47a18b9f1b
Simplify row-major matrix/vector multiplies.
2019-07-23 10:56:57 +02:00
Hans-Kristian Arntzen
d584d833fa
Test array of std140 vectors.
2019-07-23 10:38:32 +02:00
Hans-Kristian Arntzen
6224199c76
Add struct size padding tests.
2019-07-23 10:30:37 +02:00
Hans-Kristian Arntzen
82c819ee6c
Add test for CompositeExtract from row-major loaded vector.
2019-07-22 16:32:22 +02:00
Hans-Kristian Arntzen
d7a5303cf2
Add test for split access chain into row-major matrix.
2019-07-22 16:28:05 +02:00
Hans-Kristian Arntzen
172185016f
MSL: Add std140 and scalar matrix layouts.
2019-07-22 11:30:03 +02:00
Hans-Kristian Arntzen
6471236652
MSL: Add std430 matrix access test.
2019-07-22 11:23:06 +02:00
Hans-Kristian Arntzen
c7eda1bce9
Test glsl.std450 more exhaustively.
...
Make sure to test everything with scalar as well to catch any weird edge
cases.
Not all opcodes are covered here, just the arithmetic ones. FP64 packing
is also ignored.
2019-07-17 11:53:05 +02:00