Commit Graph

3055 Commits

Author SHA1 Message Date
Hans-Kristian Arntzen
f93a8fb1fe GLSL: Support GL_EXT_shader_image_load_formatted. 2021-04-20 13:36:51 +02:00
Hans-Kristian Arntzen
90c70e6605 MSL: Handle variable access in OpSelect.
CFG analysis needs to know if we need to take address of variable.
2021-04-20 13:20:49 +02:00
Hans-Kristian Arntzen
96ba044f01 HLSL: Fix automatic location assignment in block IO. 2021-04-20 13:04:26 +02:00
Hans-Kristian Arntzen
3cb8e7c223
Merge pull request #1643 from KhronosGroup/fix-1639
Add some interfaces to aid with LTO-style optimization
2021-04-19 16:21:59 +02:00
Hans-Kristian Arntzen
ae9ca7d73c MSL: Fix copy of arrays to/from stage IO variables.
Need to take into account effective storage classes and whether or not
we target stage IO blocks since native arrays are conditionally enabled.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
986196030d MSL: Don't use native arrays for tess level inputs. 2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
4a379a00f3 MSL: Don't emit native array for masked clip/cull distance. 2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
406af8ff4d c: Add C API for builtin stage IO reflection. 2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
b4a380a04c Support reflecting builtins.
They were ignored in input/output variables.
2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
852f2da63c Check SPIR-V 1.4 rules when reflecting resources. 2021-04-19 12:10:49 +02:00
Hans-Kristian Arntzen
682a227f4b MSL: Make builtin argument type declaration context sensitive.
Sometimes we'll need array template, sometimes not 🤷.
2021-04-19 12:10:49 +02:00
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