Hans-Kristian Arntzen
c1edd35d57
MSL: Use spvUnsafeArray for builtin arrays after all.
...
It will get too messy to deal with constant initializers any other way,
so just deal with complexity in argument_decl instead ...
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
7b9a591aa7
MSL: Hoist out to_tesc_invocation_id() in more places.
...
When emitting fixup code, we might not have gl_InvocationID yet.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
75ed73818c
MSL: Handle loading Clip/CullDistance in TESE.
...
Need to allow the flattened space to go through in some edge cases where
we cannot reasonably unflatten.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
a159334895
MSL: Correctly analyze if builtin block is active.
...
Need to consider all members, bi_type is invalid for Blocks, need to
look at member decorations.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
cea934c03f
MSL: Test that we can capture cull distance to buffer.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
5826298697
MSL: Handle CullDistance better.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
23da445bd4
MSL: Emit multiple threadgroup slices for multi-patch.
...
Multiple patches can run in the same workgroup when using multi-patch
mode, so we need to allocate enough storage to avoid false sharing.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
b442500204
MSL: Unroll initializations of CullDistance/ClipDistance control points.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
c9946296dd
MSL: Fix initialization of masked threadgroup variables.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
ee85bb345e
Fix print_help comment.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
faf80b08fc
MSL: Don't report fallback location allocations as being "used".
...
It may shadow unused *real* inputs and confuse applications.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
adc5fe3615
C: Add C api for stage output masking.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
5e9c2d060e
MSL: Cleanup fallback IO block emission.
...
Need to emit in add_variable_to_iface(). Unifies the code paths a fair
bit.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
e32c474911
MSL: Handle masking of TESC IO block members.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
dc54f75eec
MSL: Fixup gl_PerVertex names if we're emitting masked builtins.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
40f628f49c
MSL: Add test for complex control point outputs.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
46c48ee6b5
MSL: Rewrite how IO blocks are emitted in multi-patch mode.
...
Firstly, never flatten inputs or outputs in multi-patch mode.
The main scenario where we do need to care is Block IO.
In this case, we should only flatten the top-level member, and after
that we use access chains as normal.
Using structs in Input storage class is now possible as well. We don't
need to consider per-location fixups at all here. In Vulkan, IO structs
must match exactly. Only plain vectors can have smaller vector sizes as
a special case.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
425e968720
MSL: Handle flattening of patch block outputs as well.
...
Always propagate InterfaceMember decoration.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
8e2dbe0d38
MSL: Do not declare patch variables on stack.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
ff3f5bcba5
MSL: Handle masking of builtin control points.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
6ecdd64a91
MSL: Emit a masked builtin IO block if necessary.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
436b1250da
MSL: Do not perform scalar fixups for control-point outputs.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
22c9b63e78
MSL: Fix argument_decl check for builtin.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
c635c35c12
MSL: Temporarily allow empty output struct.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
a59e25db18
MSL: Small refactors.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
74b2acab9b
MSL: Always emit block variable for block types.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
ae7bb41ef4
MSL: Test that we can mask location writes in TESC.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
3255d6cef0
MSL: Explicitly only consider masked variables to be thread-group-like.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
ba93b6518d
MSL: Fix masking of vertex block outputs.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
a393de31e6
MSL: Refactor out variable/block member masking.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
857295a9ab
MSL: Add tests for masking with --for-tess.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
43b6ea2c9a
MSL: Remove position mask tests. They will fail compilation.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
e7b37392bf
MSL: Emit correct address space for masked arguments.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
65b5ff7ece
MSL: Don't emit weird reference type for spvUnsafeArray types.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
e7824c8b6e
MSL: Handle masked outputs in extract_global_variables.
...
Need to conditionally add gl_in or gl_out.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
50a6bc058a
MSL: Force builtin arrays for builtin array types.
...
Handles argument_decl() correctly.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
88b54f5dab
MSL: Add tests for vertex output masking.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
394c038bfd
MSL: Do not consider effective storage for any composite.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
04988b89b9
MSL: Handle effective storage for masked CP outputs.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
f2b5fb3f45
MSL: Emit threadgroup storage class for masked control point outputs.
...
Shader can still rely on writes to threadgroup memory to be visible.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
ea91579a7f
MSL: Do not redirect tess access chains on masked outputs.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
9c1cadd440
Add --mask-stage-output-* CLI options.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
f682e89188
MSL: Correctly emit array type for masked outputs.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
2a2d57df13
MSL: Sketch out API to aid LTO-style optimization.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
9a144bb2b9
Clean up member sorting.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
0997e81118
MSL: Sort builtin IO block members by builtin type.
...
Ensures consistent block matching.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
b4aa6dacfa
MSVC: Add /bigobj for debug builds.
2021-04-19 12:10:23 +02:00
Hans-Kristian Arntzen
45818c14e4
Merge pull request #1648 from billhollings/msl-pad-arg-buff-structs
...
MSL: Support padding Metal argument buffer entries based on argument index.
2021-04-19 10:36:02 +02:00
Bill Hollings
b3bfe22eaa
MSL: Fixes to support padding Metal argument buffer entries based on argument index.
...
For buffers, support all MSLResourceBinding::basetype pointers, not just void*.
Rename MSLResourceBinding::base_type to basetype for consistent use in other structs.
2021-04-18 17:34:55 -04:00
Bill Hollings
daba0dfba6
MSL: Fixes to support padding Metal argument buffer entries based on argument index.
...
For completeness, add [[id(N)]] qualifier to padding struct members.
Run clang-format.
2021-04-17 15:20:53 -04:00