Commit Graph

2027 Commits

Author SHA1 Message Date
Hans-Kristian Arntzen
146dc453bc
Merge pull request #1029 from KhronosGroup/msl-2.2-validation-fix
Prepare for MSL 2.2 testing
2019-06-17 19:06:02 +02:00
Hans-Kristian Arntzen
be1e27a6e5 MSL: Conditionally validate MSL 2.2 shaders.
Travis CI Xcode image does not support MSL 2.2 yet (beta), so just do
local validation for now.
2019-06-17 16:07:07 +02:00
Hans-Kristian Arntzen
026a167549 MSL: New SDK errors out on cull distance.
Not supported, so just ignore this test for now, it should not have
compiled in the first place.
2019-06-14 12:12:40 +02:00
Hans-Kristian Arntzen
4104e36300
Merge pull request #1027 from KhronosGroup/fix-1026
MSL: Fix regression with Private parameter declaration.
2019-06-13 13:45:01 +02:00
Hans-Kristian Arntzen
d81bfc5b58 MSL: Fix regression with Private parameter declaration.
If we compile multiple times due to forced_recompile, we had
deferred_declaration = true while emitting function prototypes which
broke an assumption. Fix this by clearing out stale state before leaving
a function.
2019-06-13 10:36:21 +02:00
Hans-Kristian Arntzen
95053ea4bc
Merge pull request #1024 from KhronosGroup/fix-1016
GLSL/MSL: Support stencil export
2019-06-12 12:48:10 +02:00
Hans-Kristian Arntzen
00a8539d1d
Merge pull request #1022 from KhronosGroup/fix-1017
MSL: Support Invariant qualifier on position.
2019-06-12 11:35:08 +02:00
Hans-Kristian Arntzen
14d0a1eb0c MSL: Support stencil export. 2019-06-12 10:21:20 +02:00
Hans-Kristian Arntzen
a9da59b0b8 GLSL: Support GL_ARB_shader_stencil_export. 2019-06-12 10:06:54 +02:00
Hans-Kristian Arntzen
a7b2ba28a0 MSL: Support Invariant qualifier on position. 2019-06-12 09:39:12 +02:00
Hans-Kristian Arntzen
fccf1d0462 Add MSL 2.2 path in test_shaders.py. 2019-06-12 09:30:41 +02:00
Hans-Kristian Arntzen
5e9e8918f9
Merge pull request #1020 from KhronosGroup/msl-constexpr-by-binding
MSL: Support remapping constexpr samplers by set/binding.
2019-06-11 10:11:29 +02:00
Hans-Kristian Arntzen
7fd379774e Expand constexpr sampler sanity check. 2019-06-10 16:00:20 +02:00
Hans-Kristian Arntzen
30bb197a5d MSL: Support remapping constexpr samplers by set/binding.
Older API was oriented around IDs which are not available unless you're
doing full reflection, which is awkward for certain use cases which know
their set/bindings up front.

Optimize resource bindings to be hashmap rather than doing linear seeks
all the time.
2019-06-10 15:41:36 +02:00
Hans-Kristian Arntzen
3e53273cc7
Merge pull request #1019 from KhronosGroup/fix-1018
Employ heuristics to figure out how to emit SSBO/UAV reflection names.
2019-06-10 14:05:37 +02:00
Hans-Kristian Arntzen
457eba355e Employ heuristics to figure out how to emit SSBO/UAV reflection names.
This is rather shaky, but we don't have many choices here except add a
lot of awkward and unintuitive options. Try to deduce this from OpSource
and fallback to heuristic.
2019-06-10 11:24:24 +02:00
Hans-Kristian Arntzen
a38eb6209d
Merge pull request #1008 from KhronosGroup/fix-1007
Deal with case where a variable is dominated by inner part of a loop.
2019-06-06 14:41:50 +02:00
Hans-Kristian Arntzen
6b52b0fe8b Deal with nested loops.
Actually need to hoist out variable to outermost loop.
2019-06-06 14:37:02 +02:00
Hans-Kristian Arntzen
02ae99f399 Use the existing loop dominator when doing loop variable preservation. 2019-06-06 12:22:28 +02:00
Hans-Kristian Arntzen
bf56dc88b9 Rewrite how loop dominators are propagated.
Do this analysis in the CFG stage rather than last minute with the
ad-hoc algorithm we had in place before CFG was introduced.
2019-06-06 12:17:46 +02:00
Hans-Kristian Arntzen
03d93abc1a Deal with case where a variable is dominated by inner part of a loop.
There is a risk that we try to preserve a loop variable through multiple
iterations, even though the dominating block is inside a loop.

Fix this by analyzing if a block starts off by writing to a variable. In
that case, there cannot be any preservation going on. If we don't, pretend the
loop header is reading the variable, which moves the variable to an
appropriate scope.
2019-06-06 11:11:44 +02:00
Hans-Kristian Arntzen
720681da39
Merge pull request #1006 from KhronosGroup/fix-1003
Deal with case where a block is somehow emitted in a duplicated fashion.
2019-06-05 16:11:06 +02:00
Hans-Kristian Arntzen
990756b2d4
Merge pull request #1005 from pmoursnv/SPV_NV_ray_tracing
Add some missing features for NV_ray_tracing
2019-06-05 16:10:39 +02:00
Patrick Mours
8d64d5e776 Fix storage packing qualifiers missing on "shaderRecordNV" buffers 2019-06-05 13:31:24 +02:00
Patrick Mours
b1d406e481 Add test for callable data 2019-06-05 13:31:24 +02:00
Patrick Mours
be3035db26 Fix callable data variables 2019-06-05 13:31:24 +02:00
Patrick Mours
789178666f Add support for "shaderRecordNV" qualifier 2019-06-05 13:31:24 +02:00
Hans-Kristian Arntzen
c09ca74c61 Deal with case where a block is somehow emitted in a duplicated fashion.
We seen to have to deal with a case where a block is used multiple times
without any "proper" structured control flow, so we risk losing deferred
declaration state.
2019-06-05 12:39:40 +02:00
Hans-Kristian Arntzen
af40a212c2 Fix erronous default for emit_line_directives. 2019-06-02 16:20:21 +02:00
Hans-Kristian Arntzen
2c396ae44b
Merge pull request #1000 from KhronosGroup/fix-998
MSL: Fix declaration of unused input variables.
2019-05-31 15:52:02 +02:00
Hans-Kristian Arntzen
314efdcc42 MSL: Fix declaration of unused input variables.
In multiple-entry-point modules, we declared builtin inputs which were
not supposed to be used for that entry point.

Fix this, by being more strict when checking which builtins to emit.
2019-05-31 13:23:34 +02:00
Hans-Kristian Arntzen
cb686a5dba
Merge pull request #996 from KhronosGroup/fix-989
Support emitting OpLine directive.
2019-05-28 15:53:01 +02:00
Hans-Kristian Arntzen
48a7da4f4d Fixup OpLine parsing comments. 2019-05-28 15:51:42 +02:00
Hans-Kristian Arntzen
65af09d2d1 Support emitting OpLine directive.
Facilitates easier mapping from source language to cross-compiled output
in tooling.
2019-05-28 13:44:24 +02:00
Hans-Kristian Arntzen
d2134bbb71
Merge pull request #995 from KhronosGroup/fix-980
GLSL: Support std430 in UBOs with scalar layout.
2019-05-28 12:24:47 +02:00
Hans-Kristian Arntzen
23889f7b87 GLSL: Support std430 in UBOs with scalar layout. 2019-05-28 12:22:44 +02:00
Hans-Kristian Arntzen
1692b1497c
Merge pull request #994 from KhronosGroup/fix-965
MSL: Implement OpArrayLength.
2019-05-28 12:03:44 +02:00
Hans-Kristian Arntzen
b3094cd02a Run format_all.sh. 2019-05-27 16:54:13 +02:00
Hans-Kristian Arntzen
fd0feb1ec1 MSL: Use correct address space when passing array-of-buffers.
Need to check if the descriptor set is actually an argument buffer.
2019-05-27 16:53:30 +02:00
Hans-Kristian Arntzen
42e64597a7 OpArrayLength must trigger active variables. 2019-05-27 16:44:02 +02:00
Hans-Kristian Arntzen
7b9e0fb428 MSL: Implement OpArrayLength.
This gets rather complicated because MSL does not support OpArrayLength
natively. We need to pass down a buffer which contains buffer sizes, and
we compute the array length on-demand.

Support both discrete descriptors as well as argument buffers.
2019-05-27 16:13:09 +02:00
Hans-Kristian Arntzen
3cd89c0c0a
Merge pull request #992 from KhronosGroup/fix-986
Add Git/timestamp --revision support.
2019-05-24 16:39:08 +02:00
Hans-Kristian Arntzen
0b9a884f3f Add Git/timestamp --revision support. 2019-05-24 15:24:41 +02:00
Hans-Kristian Arntzen
2ece908e18
Merge pull request #991 from KhronosGroup/fix-987
MSL: Fix complex type alias declaration order
2019-05-23 18:28:10 +02:00
Hans-Kristian Arntzen
55ff233526 MSL: Add test case for complex type alias. 2019-05-23 15:05:30 +02:00
Hans-Kristian Arntzen
96492648d4 MSL: Fix struct declaration order with complex type aliases.
MSL generally emits the aliases, which means we cannot always place the
master type first, unlike GLSL and HLSL. The logic fix is just to
reorder after we have tagged types with packing information, rather than
doing it in the parser fixup.
2019-05-23 14:54:04 +02:00
Hans-Kristian Arntzen
09c01c2d45 Fix formatting, update C ABI version.
There are some issues with clang-format which require auto-formatting to
be disabled for this file.
2019-05-18 10:47:02 +02:00
Hans-Kristian Arntzen
e04bbd0948 Merge git://github.com/stuartcarnie/SPIRV-Cross 2019-05-18 10:37:38 +02:00
Hans-Kristian Arntzen
3953bf9c20
Merge pull request #973 from KhronosGroup/fix-972
MSL: Support image swizzle workaround with argument buffers
2019-05-18 10:37:04 +02:00
Hans-Kristian Arntzen
eaf7afed97 MSL: Support argument buffers and image swizzling.
Change aux buffer to swizzle buffer.
There is no good reason to expand the aux buffer, so name it
appropriately.

Make the code cleaner by emitting a straight pointer to uint rather than
a dummy struct which only contains a single unsized array member anyways.

This will also end up being very similar to how we implement swizzle
buffers for argument buffers.

Do not use implied binding if it overflows int32_t.
2019-05-18 10:30:06 +02:00