Hans-Kristian Arntzen
b8f1e71907
GLSL: Emit GL_EXT_buffer_reference_uvec2 as required.
2021-09-02 13:17:13 +02:00
Hans-Kristian Arntzen
23c4480d8e
Fix switch fallthrough case in some cases.
2021-08-31 17:24:09 +02:00
Hans-Kristian Arntzen
2eea6a579b
MSL: Consider that function/private variables can be block-like.
...
Handles a special case with array copies.
The implementation of this fix is not perfect, but should be good
enough for time being.
2021-08-23 13:26:45 +02:00
Hans-Kristian Arntzen
c062b6b852
Merge pull request #1725 from billhollings/fix-duplicate-glposition
...
MSL: Fix duplicate gl_Position outputs when gl_Position defined but unused.
2021-08-23 11:37:10 +02:00
Hans-Kristian Arntzen
fad1590786
Merge pull request #1722 from billhollings/row-maj-mtx-store-from-const
...
MSL: Support row-major transpose when storing matrix from constant RHS matrix.
2021-08-23 11:29:01 +02:00
Bill Hollings
e76fcf9309
MSL: Add test for fixes to MSL constant expression type down-casting.
2021-08-16 13:56:05 -04:00
Bill Hollings
3105e82b2e
MSL: Fix duplicate gl_Position outputs when gl_Position defined but unused.
...
When gl_Position is defined by SPIR-V, but neither used nor initialized,
it appeared twice in the MSL output, as gl_Position and glPosition_1.
The existing tests for whether an output is active check only that it is
used by an op, or initialized. Adding the implicit gl_Position also marked
the existing gl_Position as active, duplicating the output variable.
Fix is that when checking for the need to add an implicit gl_Position
output, also check if the var is already defined in the shader,
and just needs to be marked as active.
Add test shader.
2021-08-16 11:23:15 -04:00
Bill Hollings
9552ca5473
MSL: Support row-major transpose when storing matrix from constant RHS matrix.
...
Remove test and exception when storing row-major matrix
from RHS that is not a SPIRExpression.
Add test shaders.
2021-08-12 09:08:35 -04:00
Hans-Kristian Arntzen
cb613eb675
Handle value access in terminators.
...
Fixes case where value is created inside loop body and consumed by a
return outside it.
2021-07-29 15:27:52 +02:00
Hans-Kristian Arntzen
cd22336a38
Merge pull request #1712 from cdavis5e/msl-subgroup-ballot-simplify
...
MSL: Simplify spvSubgroupBallot().
2021-07-22 12:15:33 +02:00
Chip Davis
03ad13bae6
MSL: Simplify spvSubgroupBallot().
...
A bitcast to `uint2` will do just fine. I honestly don't know why I
didn't do it this way earlier.
2021-07-21 00:25:09 -05:00
Hans-Kristian Arntzen
18f3cd6810
GLSL: Ensure ray query object decls are flushed if allocated in Function.
...
glslang always emits Private variables, but DXC not so much.
2021-07-20 12:04:00 +02:00
Hans-Kristian Arntzen
5b227cc57c
GLSL: Implement GL_EXT_ray_query.
2021-07-19 14:01:21 +02:00
Bill Hollings
ebb5098def
MSL: Adjust gl_SampleMaskIn for sample-shading and/or fixed sample mask.
...
Vulkan specifies that the Sample Mask Test occurs before fragment shading.
This means gl_SampleMaskIn should be influenced by both sample-shading and
VkPipelineMultisampleStateCreateInfo::pSampleMask.
CTS tests dEQP-VK.pipeline.multisample_shader_builtin.* bear this out.
For sample-shading, gl_SampleMaskIn should only have a single bit set,
Since Metal does not filter for this, apply a bitmask based on gl_SampleID.
For a fixed sample mask, since Metal is unaware of
VkPipelineMultisampleStateCreateInfo::pSampleMask, we need to ensure that
we apply it to both gl_SampleMaskIn and gl_SampleMask. This has the side
effect of a redundant application of pSampleMask if the shader already
includes gl_SampleMaskIn when setting gl_SampleMask, but I don't see an
easy way around this.
Also, simplify the logic for including the fixed sample mask in gl_ShaderMask,
and print the fixed sample mask as a hex value for readability of bits.
2021-07-13 21:22:13 -04:00
Hans-Kristian Arntzen
71b83a18f4
MSL: Add test for scalar access chain pull interpolant.
2021-07-13 12:25:18 +02:00
Hans-Kristian Arntzen
206ee8f171
GLSL: Support pervertexNV in NV barycentric extension.
2021-06-30 16:27:46 +02:00
Hans-Kristian Arntzen
d6b29ab017
HLSL: Rewrite how block IO is emitted.
...
Emit block members directly in the IO structs and sort them.
Ensures we can get some kind of stable order between stages.
To complete the story, we'll need to be able to inject unused inputs /
builtins, or eliminate unused outputs (probably easiest solution).
2021-06-28 15:04:49 +02:00
Hans-Kristian Arntzen
8216e87f02
Handle SPIR-V 1.4 selection constructs.
...
Fix bug in to_trivial_mix_op, where we made a pre-1.4 assumption that
component count of selector is equal to value component count.
2021-06-28 12:23:44 +02:00
Hans-Kristian Arntzen
2e1b5fb39e
Merge pull request #1686 from KhronosGroup/fix-1684
...
GLSL: Support control flow hints
2021-06-03 14:13:18 +02:00
Hans-Kristian Arntzen
449f68ef3b
Ensure loop control flow hints only appear above loops.
2021-06-03 12:19:10 +02:00
Hans-Kristian Arntzen
d62b3c2b92
GLSL: Implement control flow hints.
2021-06-03 12:01:49 +02:00
Hans-Kristian Arntzen
165dbff228
Handle odd type for textureGather component.
2021-06-03 11:37:45 +02:00
xndcn
02fb8f2a24
Add comment after inf/nan float number for clarifying.
2021-05-27 02:40:41 +08:00
Hans-Kristian Arntzen
bf3793dd35
MSL: Improve handling of split tessellation access chains.
2021-05-21 16:32:03 +02:00
Hans-Kristian Arntzen
a6c9514856
Merge pull request #1676 from KhronosGroup/fix-1671
...
GLSL: Implement noncoherent framebuffer fetch.
2021-05-21 15:43:58 +02:00
Hans-Kristian Arntzen
26a4986009
GLSL: Implement noncoherent framebuffer fetch.
2021-05-21 14:22:57 +02:00
Hans-Kristian Arntzen
99ae0d32e9
MSL: Handle array with component when we cannot rely on user() attrib.
...
In these cases, we emit one variable per location, and so we must
flatten stuff.
2021-05-21 13:46:33 +02:00
Hans-Kristian Arntzen
b8115ffbe0
HLSL: Implement invariant as precise.
...
Only option we have.
2021-05-07 13:15:55 +02:00
Hans-Kristian Arntzen
e47a30e807
Honor NoContraction qualifier.
...
We'll need to force a temporary and mark it as precise.
MSL is a little weird here, but we can piggyback on top of the invariant
float math option here to force fma() operations everywhere.
2021-05-07 12:59:47 +02:00
Hans-Kristian Arntzen
6dbab0df47
Update reference output.
2021-05-07 11:12:22 +02:00
Lukas Taparauskas
72a2ec4c1b
MSL: Fix '--msl-multi-patch-workgroup' out of bounds reads when dispatching more threads than control points ( #1662 )
...
* Fix '--msl-multi-patch-workgroup' cases where thread count exceeds data bounds
*Fix gl_PrimitiveID off by one error when computing last valid index
*Point gl_out to the last patch's data when threads exceed input data bounds
*Point patchOut to the last patch's data when threads exceed input data bounds
* Update MSL test expectations.
* Undo change to MSL multi-patch hull output bound checks
* Update MSL multi-patch test expectations.
2021-04-29 20:01:26 +02:00
Hans-Kristian Arntzen
c624d5387c
Merge pull request #1660 from KhronosGroup/fix-1658
...
MSL: Use proper array for quad tess levels.
2021-04-23 15:21:00 +02:00
Hans-Kristian Arntzen
82a77e534e
MSL: Use proper array for quad tess levels.
...
We need to handle loads from array as well, so the float4 hack doesn't
work.
2021-04-23 14:12:00 +02:00
Hans-Kristian Arntzen
0e963c62b6
HLSL: Support Shuffle wave ops.
...
WaveReadLaneAt is no longer restricted to dynamically uniform index,
so can implement the other shuffle ops.
2021-04-23 13:03:35 +02:00
Hans-Kristian Arntzen
532f65583e
Rewrite how non-uniform qualifiers are handled.
...
Remove all shenanigans with propagation, and only consume nonuniform
qualifiers exactly where needed (last minute).
2021-04-22 16:03:08 +02:00
Hans-Kristian Arntzen
d137abeef5
Merge pull request #1655 from KhronosGroup/fix-1640
...
GLSL: Support shading rate builtins.
2021-04-20 16:35:02 +02:00
Hans-Kristian Arntzen
8e24e0b224
Merge pull request #1654 from KhronosGroup/fix-1641
...
GLSL: Implement gl_FragFullyCoveredNV.
2021-04-20 16:34:53 +02:00
Hans-Kristian Arntzen
71eb1754e3
Merge pull request #1653 from KhronosGroup/fix-1638
...
GLSL: Support GL_EXT_shader_image_load_formatted.
2021-04-20 16:34:44 +02:00
Hans-Kristian Arntzen
c89b5a1a3f
GLSL: Support shading rate builtins.
2021-04-20 13:58:07 +02:00
Hans-Kristian Arntzen
3fd148450a
GLSL: Implement gl_FragFullyCoveredNV.
2021-04-20 13:44:52 +02:00
Hans-Kristian Arntzen
f93a8fb1fe
GLSL: Support GL_EXT_shader_image_load_formatted.
2021-04-20 13:36:51 +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
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