Hans-Kristian Arntzen
ebf463674d
MSL: Allow removing clip distance user varyings.
...
Only safe if user knows that subsequent shader stage will not read clip
distance.
2020-04-20 09:58:40 +02:00
Panagiotis Christopoulos Charitos
b3109b8ad0
Reflection: Add specialization constant name
...
Fixes #1311
2020-04-18 22:00:36 +02:00
Chip Davis
96f7008aa8
MSL: Force disabled fragment builtins to have the right name.
...
DXVK emits SPIR-V where fragment shader builtins have names derived from
DXBC assembly, e.g. `oDepth` for `FragDepth`. When we declared the
disabled output, we used this name, but when referencing it, we
continued to use the GLSL name. This breaks compilation.
2020-04-15 19:25:18 -05:00
Chip Davis
495e48de44
MSL: Only disable output variables in fragment shaders.
...
Forgot to do this in #1319 .
Fixes #1322 .
2020-04-15 12:14:57 -05:00
Chip Davis
b29f83c383
MSL: Add options to control emission of fragment outputs.
...
Like with `point_size` when not rendering points, Metal complains when
writing to a variable using the `[[depth]]` qualifier when no depth
buffer be attached. In that case, we must avoid emitting `FragDepth`,
just like with `PointSize`.
I assume it will also complain if there be no stencil attachment and the
shader write to `[[stencil]]`, or it write to `[[color(n)]]` but there
be no color attachment at n.
2020-04-13 15:29:11 -05:00
Hans-Kristian Arntzen
c7b75a8fe6
MSL: Do not use base expression with PhysicalTypeID OpCompositeExtract.
...
Similar reasoning as packed expressions.
2020-04-07 18:25:44 +02:00
Hans-Kristian Arntzen
14f24d71ab
Merge pull request #1308 from KhronosGroup/fix-1306
...
HLSL: Add support for treating NonWritable UAV texture as SRV instead.
2020-04-03 17:42:56 +02:00
Hans-Kristian Arntzen
d9d3359ffb
MSL: Deal with cases where builtin is implicitly needed, declared, but unused.
...
We need to make sure any builtins which are declared and unused are
emitted as active variables.
2020-04-03 12:50:21 +02:00
Hans-Kristian Arntzen
28bf9057df
HLSL: Add support for treating NonWritable UAV texture as SRV instead.
2020-04-03 11:50:50 +02:00
Hans-Kristian Arntzen
3cb6aeb480
MSL: Fix access chain for deep struct hierarchy on array of buffers.
2020-03-31 14:17:29 +02:00
dan sinclair
32307df73a
Roll GLSLang, SPIRV-Tools and SPIRV-Headers
...
This CL rolls the various dependencies and updates tests as needed.
2020-03-30 11:03:43 -04:00
Hans-Kristian Arntzen
b8905bbd95
Add support for forcefully zero-initialized variables.
...
Useful to better support certain platforms which require all variables
to be initialized to something.
2020-03-26 13:38:27 +01:00
Hans-Kristian Arntzen
04e877df12
GLSL: Implement GL_EXT_shader_framebuffer_fetch.
2020-03-19 14:53:39 +01:00
Hans-Kristian Arntzen
05004a57ea
GLSL/HLSL: Fix nonuniform qualifier for SSBO atomics.
2020-03-19 12:05:27 +01:00
Hans-Kristian Arntzen
a3d3c80dd7
GLSL/HLSL: Implement nonuniform qualifier for image atomics.
2020-03-19 11:35:29 +01:00
Hans-Kristian Arntzen
185551bfaf
HLSL: Do not emit globallycoherent for SRV ByteAddressBuffer.
2020-03-05 10:37:36 +01:00
Hans-Kristian Arntzen
95cd20f1c7
Add test for disable-storage-image-qualifier-deduction.
2020-03-04 16:42:31 +01:00
Hans-Kristian Arntzen
c27e1efbf1
HLSL: Add option to always treat SSBO as UAV, even with readonly.
...
This can make codegen more predictable since ByteAddressBuffer is SRV
and not UAV.
2020-03-04 16:42:31 +01:00
Hans-Kristian Arntzen
d91e134500
MSL: Add native array test for composite array initialization.
2020-02-24 13:34:51 +01:00
Hans-Kristian Arntzen
30343f3e95
MSL: Reintroduce workaround for constant arrays being passed by value.
2020-02-24 13:22:52 +01:00
Hans-Kristian Arntzen
20b28f72fa
MSL: Reinstate workaround for returning arrays.
2020-02-24 13:04:10 +01:00
Hans-Kristian Arntzen
c9d4f9cd74
MSL: Add a workaround path to force native arrays for everything.
2020-02-24 12:47:14 +01:00
Dan Sinclair
7ec16b64c8
Roll GLSLang, SPIRV-Tools and SPIRV-Headers
...
This CL rolls the various dependencies of SPIRV-Cross and updates the
tests as needed.
2020-02-19 10:13:52 -05:00
Hans-Kristian Arntzen
e81c1b1d98
HLSL: Declare undef variables as static.
...
Undef variables would somehow become cbuffer variables without any
warning ...
2020-02-08 13:39:50 +01:00
Hans-Kristian Arntzen
655312cb47
GLSL: Support GL_ARB_enchanced_layouts for XFB.
2020-01-27 13:11:38 +01:00
Chip Davis
ae6c05f6f4
MSL: Move inline uniform blocks to the end of the argument buffer.
...
Limit inline blocks to one per descriptor set.
This should avoid the need for complicated code to calculate the
argument buffer ID stride of an inline uniform block. If there's demand
for more inline blocks, we can revisit this.
2020-01-25 13:40:51 -06:00
Chip Davis
fedbc35315
MSL: Support inline uniform blocks in argument buffers.
...
Here, the inline uniform block is explicit: we instantiate the buffer
block itself in the argument buffer, instead of a pointer to the buffer.
I just hope this will work with the `MTLArgumentDescriptor` API...
Note that Metal recursively assigns individual members of embedded
structs IDs. This means for automatic assignment that we have to
calculate the binding stride for a given buffer block. For MoltenVK,
we'll simply increment the ID by the size of the inline uniform block.
Then the later IDs will never conflict with the inline uniform block. We
can get away with this because Metal doesn't require that IDs be
contiguous, only monotonically increasing.
2020-01-24 18:51:24 -06:00
Hans-Kristian Arntzen
af787a8a79
Merge pull request #1264 from KhronosGroup/msl-argument-buffer-persist
...
MSL: Add support for force-activating IAB resources.
2020-01-16 14:44:23 +01:00
Hans-Kristian Arntzen
c3bd136df1
MSL: Add support for force-activating IAB resources.
...
Important for ABI compatibility on MSL in certain cases.
2020-01-16 11:12:06 +01:00
Hans-Kristian Arntzen
f79c1e2fed
Deal with illegal names in types as well.
...
- Fixes issue with clip_distance flattening in MSL where member to
flatten from would come from to_member_name, where it should have used
the builtin name directly. This member name was modified by this patch
and broke clip distance test shaders.
- Some cleanups with ir.meta, use ir.find_meta instead to not create
unnecessary hashmap nodes.
2020-01-16 10:34:49 +01:00
Hans-Kristian Arntzen
79700d5412
Merge pull request #1262 from KhronosGroup/json-reflection-improvements
...
Reflection: Various improvements
2020-01-15 18:51:34 +01:00
Hans-Kristian Arntzen
762c87a7bb
Reflection: Add array stride/matrix stride reflection.
2020-01-15 17:01:35 +01:00
Hans-Kristian Arntzen
18e24c3ca2
Reflection: Emit reflection information for array size literalness.
...
If not literal, check specialization_constant entries for "variable_id"
to link up ID with spec constant values. This maps directly to C++ API.
2020-01-15 16:49:19 +01:00
Hans-Kristian Arntzen
55fe6050fe
GLSL: Implement geometry shader passthrough extension.
2020-01-15 16:18:29 +01:00
Hans-Kristian Arntzen
2bbb012e9c
MSL: Deal with sign on wave min/max.
2020-01-09 12:35:18 +01:00
Hans-Kristian Arntzen
88ddeec49a
HLSL: Deal with casting for WaveActiveMin/Max.
2020-01-09 12:35:18 +01:00
Hans-Kristian Arntzen
5253da9e63
GLSL: Deal with sign in subgroup Min/Max operations.
2020-01-09 12:35:14 +01:00
Hans-Kristian Arntzen
1cbd71b354
HLSL: Fix bug when reading and writing structs from SSBO.
2020-01-08 14:27:02 +01:00
Hans-Kristian Arntzen
151ff1e870
HLSL: Implement stores for complex composites in ByteAddressBuffers.
2020-01-08 14:17:28 +01:00
Hans-Kristian Arntzen
ca9398c122
HLSL: Support loading complex composites from ByteAddressBuffer.
2020-01-08 13:05:56 +01:00
Hans-Kristian Arntzen
c024e24d45
MSL: Deal with padded fragment output + Component decoration.
2020-01-07 17:02:12 +01:00
Hans-Kristian Arntzen
93f3265fe0
MSL: Deal with packing vectors for vertex input/fragment output.
2020-01-07 14:14:31 +01:00
Hans-Kristian Arntzen
7a69d764b0
MSL: Add trivial tests for Component decoration.
...
Verifies that Component decoration is honored for vertex outputs and
fragment inputs.
2020-01-07 11:36:51 +01:00
Hans-Kristian Arntzen
8bef6ff167
Add test shader for OpCopyLogical with packing/unpacking.
2020-01-06 12:44:18 +01:00
Hans-Kristian Arntzen
9012a39b60
Basic implementation of OpCopyLogical.
2020-01-06 11:47:26 +01:00
Hans-Kristian Arntzen
7c1e34f3b9
GLSL: Fix array of input patch variables.
...
Hoist out the hack to make array sizes unsized to a place where we can
differentiate patch variables from control point variables.
2019-12-10 12:02:12 +01:00
Hans-Kristian Arntzen
d7e612f91a
GLSL: Fix EmitStreamVertex/Primitive.
2019-12-09 10:49:48 +01:00
Hans-Kristian Arntzen
67b2991451
Don't emit memoryBarrierShared() in workgroup control barriers.
...
This is implied in both GL and GLES. Emitting memoryBarrierShared() was
based on earlier confusion in the spec which has since been fixed and
clarified.
2019-12-04 15:06:19 +01:00
Dan Sinclair
b77be9f347
Update graphics robust access results
...
The robust access code was fixed to use a signed clamp which generates
different results in the SPIR-V cross test.
2019-12-03 16:49:43 -05:00
Dan Sinclair
f40c629821
Roll SPIRV-Tools, SPIRV-Headers and GLSLang
...
This CL updates the three depdencies and updates the tests to handle the
new validation errors which are produced.
2019-12-02 16:17:21 -05:00