Hans-Kristian Arntzen
3fd148450a
GLSL: Implement gl_FragFullyCoveredNV.
2021-04-20 13:44:52 +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
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
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
ff3f5bcba5
MSL: Handle masking of builtin control points.
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
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
ba93b6518d
MSL: Fix masking of vertex block outputs.
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
65b5ff7ece
MSL: Don't emit weird reference type for spvUnsafeArray types.
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
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
ee31e84e30
GLSL: Handle complex load/store scenarios to gl_SampleMask.
...
Need special workarounds to handle array load/store since array size is
unsized in GLSL, and array copy is not possible.
Also, consider bitcast for scalar loads and stores.
2021-03-09 10:25:03 +01:00
Hans-Kristian Arntzen
fb1f295aaf
Merge pull request #1635 from KhronosGroup/fix-1627
...
Handle edge cases in OpCopyMemory.
2021-03-09 10:21:35 +01:00
Hans-Kristian Arntzen
4ca06c7278
Handle edge cases in OpCopyMemory.
...
Implement this by synthesizing an OpLoad/OpStore pair instead.
2021-03-08 14:15:27 +01:00
Hans-Kristian Arntzen
aea6d29aa8
MSL: Add test for logical subgroup arith ops.
2021-03-08 12:57:37 +01:00
Hans-Kristian Arntzen
d6c2c1b39a
HLSL: Support logical subgroup ops.
2021-03-08 12:52:03 +01:00
Hans-Kristian Arntzen
5570043af3
GLSL: Add support for Logical subgroup ops.
...
Completely missed these ...
2021-03-08 12:06:46 +01:00
Hans-Kristian Arntzen
97796e0609
MSL: Deal with pointer-to-pointer qualifier ordering.
2021-02-26 13:37:14 +01:00
Hans-Kristian Arntzen
621884d709
Merge pull request #1622 from KhronosGroup/fix-1619
...
MSL: Handle load and store to TessLevel array in TESC.
2021-02-17 20:46:06 +01:00
Hans-Kristian Arntzen
85704f70bc
MSL: Handle load and store to TessLevel array in TESC.
...
More edge cases ... :(
2021-02-17 13:26:08 +01:00
Hans-Kristian Arntzen
ce552f4f91
MSL: Gracefully assign automatic input locations to builtin attributes.
2021-02-17 12:29:19 +01:00
Hans-Kristian Arntzen
bae17e8204
Merge pull request #1617 from KhronosGroup/fix-1608
...
MSL: Fixup type when using tessellation levels in TESC functions.
2021-02-16 11:10:07 +01:00
Hans-Kristian Arntzen
daddbd4078
MSL: Fixup type when using tessellation levels in TESC functions.
...
Need to rewrite array size depending on execution mode.
2021-02-15 13:28:11 +01:00
Hans-Kristian Arntzen
0ad12a0036
MSL: Always return [[position]] when required.
2021-02-15 12:57:37 +01:00
Hans-Kristian Arntzen
ea02a0c03a
Check entry point variables in is_hidden_variables.
...
Need to be careful not to emit globals we're not supposed to.
2021-01-22 13:53:22 +01:00
Hans-Kristian Arntzen
4bedad3860
Handle nonuniformEXT qualifier for acceleration structures.
2021-01-22 13:13:56 +01:00
Hans-Kristian Arntzen
7ab3f3f74e
Deal better with CompositeExtract from constant composite.
...
There is no good reason for applications to emit this kind of code, but
some do. Special case this scenario.
2021-01-22 12:30:16 +01:00
Hans-Kristian Arntzen
66fb0bd9df
GLSL: Handle tracing against incoming payload/callable.
2021-01-22 11:23:04 +01:00
Hans-Kristian Arntzen
2097c30985
GLSL: Support both SPV_KHR_ray_tracing and NV_ray_tracing.
...
Fairly minor differences, so can keep them side by side without too much
effort. NV support is effectively deprecated now however.
- Add OpConvertUToAccelerationStructureKHR
- Ignore/Terminate ray is now a terminator in KHR, but a call in NV.
- Fix some bugs with reportIntersection.
2021-01-08 14:59:04 +01:00
Hans-Kristian Arntzen
5d82d32e0f
Roll dependencies.
2021-01-08 10:41:51 +01:00
Hans-Kristian Arntzen
893a011299
MSL: Fix various bugs with framebuffer fetch on macOS and argument buffers.
...
Introduce a helper to make it clearer if a resource can be
considered for argument buffers or not.
2021-01-08 10:19:18 +01:00