Commit Graph

1682 Commits

Author SHA1 Message Date
Chip Davis
c51e5b7911 MSL: Add a setting to capture vertex shader output to a buffer.
This will be necessary to support transform feedback, as well as
tessellation shaders.
2019-02-05 20:00:10 -06:00
Hans-Kristian Arntzen
84f56d0b43
Merge pull request #845 from cdavis5e/fix-assertions
Move assertions after the check for equal types.
2019-01-31 21:36:25 +01:00
Chip Davis
ef0b1fc841 Move assertions after the check for equal types.
`bitcast_glsl_op()` is sometimes called for `Boolean` types, e.g. for
specialization constants. We don't want the assert to trip if this is
going to be a no-op anyway.
2019-01-31 14:28:21 -06:00
Hans-Kristian Arntzen
0c0ceb9763
Merge pull request #844 from KhronosGroup/fix-783
Add support for 8-bit arithmetic in GLSL and MSL
2019-01-30 19:48:36 +01:00
Hans-Kristian Arntzen
fcbe999d99 MSL: Fix another test incompatibility. 2019-01-30 17:22:38 +01:00
Hans-Kristian Arntzen
b78ffa1cc7 Fixup MSL iOS test. 2019-01-30 16:26:41 +01:00
Hans-Kristian Arntzen
2ed171e525 GLSL/MSL: Implement 8-bit part of VK_KHR_shader_float16_int8.
Storage was in place already, so mostly just dealing with bitcasts and
constants.

Simplies some of the bitcasting logic, and this exposed some bugs in the
implementation. Refactor to use correct width integers with explicit bitcast opcodes.
2019-01-30 15:45:24 +01:00
Hans-Kristian Arntzen
2edee351f0 Run format_all.sh. 2019-01-30 13:42:50 +01:00
Hans-Kristian Arntzen
4e7777c443 Update to latest glslang/SPIRV-Tools.
Fix various bugs along the way.
2019-01-30 13:41:57 +01:00
Hans-Kristian Arntzen
8804152253
Merge pull request #843 from KhronosGroup/fix-826
Support initializers on StorageClassOutput.
2019-01-30 12:35:50 +01:00
Hans-Kristian Arntzen
3e09879131 Support initializers on StorageClassOutput. 2019-01-30 10:29:08 +01:00
Hans-Kristian Arntzen
a029d3faa1
Merge pull request #842 from KhronosGroup/fix-838
MSL: Use correct alignment for structs which are members of other structs.
2019-01-28 16:40:01 +01:00
Hans-Kristian Arntzen
5ff12d780b Run format_all.sh. 2019-01-28 15:20:30 +01:00
Hans-Kristian Arntzen
912fde95f1 MSL: Use correct size for structs.
Need to align the size of structs to the natural alignment.
2019-01-28 15:20:30 +01:00
Hans-Kristian Arntzen
217eb5b5f9 MSL: Add a preliminary check for bad arrays of structs.
ArrayStride can be larger than the declared struct size.
We have no obvious solution for now, but warn about it in the MSL output
for the time being.
2019-01-28 15:20:30 +01:00
Hans-Kristian Arntzen
8c632da461 MSL: Use correct alignment rule for whole structs.
Structs are aligned as you would expect in MSL (maximum member
alignment), and it is not minimum 16 bytes like in std140.

Also rename the dummy "pad" members to a reserved naming scheme.
2019-01-28 15:20:30 +01:00
Hans-Kristian Arntzen
1f124d0a81
Merge pull request #841 from KhronosGroup/fix-840
HLSL/MSL: Fix texture projection with Dref.
2019-01-28 11:37:36 +01:00
Hans-Kristian Arntzen
18a4accd2f HLSL/MSL: Fix texture projection with Dref.
We need to divide the Dref by q.
2019-01-28 10:25:13 +01:00
Hans-Kristian Arntzen
7430e78a8c
Merge pull request #836 from KhronosGroup/fix-834
MSL: Deal with resource name aliasing.
2019-01-18 17:18:59 +01:00
Hans-Kristian Arntzen
437fc87a89 MSL: Deal with resource name aliasing.
Apparently we didn't use those yet. MSL seems to be able to alias struct
types and variable types to a degree, so that's why it has escaped
testing until now.
2019-01-18 16:27:57 +01:00
Hans-Kristian Arntzen
1040cf6cc1
Merge pull request #831 from cdavis5e/force-recompile-hooks
MSL: Hoist fixup hooks in entry_point_args() out of the compile loop.
2019-01-17 19:42:05 +01:00
Chip Davis
f500d2f70c MSL: Hoist fixup hooks in entry_point_args() out of the compile loop.
Otherwise, in the event of a forced recompile, we could end up adding
them twice.
2019-01-17 10:18:38 -06:00
Hans-Kristian Arntzen
d322087d70
Merge pull request #833 from KhronosGroup/fix-829
MSL: Fix image load/store for short vectors.
2019-01-17 15:44:34 +01:00
Hans-Kristian Arntzen
3aa08f764e MSL: Fix image load/store for short vectors.
Same fixes as for GLSL.
2019-01-17 14:54:29 +01:00
Hans-Kristian Arntzen
522c4eea97
Merge pull request #832 from KhronosGroup/fix-828
MSL: Support std140 packing rules for float[] and float2[]
2019-01-17 14:30:06 +01:00
Hans-Kristian Arntzen
73d9da7070 Avoid unintentional name conflict with HLSL backend. 2019-01-17 12:21:16 +01:00
Hans-Kristian Arntzen
91519aaf00
Merge pull request #830 from cdavis5e/forced-signedness-var-ptr
MSL: Fix some types I missed when implementing variable pointers.
2019-01-17 11:54:39 +01:00
Hans-Kristian Arntzen
76bf6d0c34 Fixup some MSL comments. 2019-01-17 11:47:37 +01:00
Hans-Kristian Arntzen
432aaed737 Need to know the original packed type when unpacking loads. 2019-01-17 11:39:46 +01:00
Hans-Kristian Arntzen
40e7723051 Run format_all.sh. 2019-01-17 11:29:50 +01:00
Hans-Kristian Arntzen
f4b74f2f4f Add basic test for std140 small vector arrays. 2019-01-17 11:29:09 +01:00
Hans-Kristian Arntzen
de7e5ccd8b Refactor out packed expressions to extended decorations.
Can't safely just cast to the original enum without lots of hacks.
2019-01-17 11:28:51 +01:00
Hans-Kristian Arntzen
72377366d3 Replace custom use of DecorationCPacked with an explicit one.
Will need to use more variants of this decoration, so might as well make
it clearer what is going on with CPacked.
2019-01-17 10:36:56 +01:00
Hans-Kristian Arntzen
f4026a5618 Refactor access_chain_internal to be more readable from callsite. 2019-01-17 10:30:13 +01:00
Hans-Kristian Arntzen
15b52bee48 Deal with packing/unpacking on store.
Still a bit buggy, since we cannot deduce between float2[] and
packed_float2. Need a deeper refactor to plumb this through ...
2019-01-17 10:06:23 +01:00
Chip Davis
1d7d910765 MSL: Fix some types I missed when implementing variable pointers. 2019-01-16 16:15:57 -06:00
Hans-Kristian Arntzen
64ca1ec677 MSL: Start considering float[] and float2[] in std140 layout. 2019-01-16 16:16:39 +01:00
Hans-Kristian Arntzen
9e3a41ad00
Merge pull request #821 from cdavis5e/pass-sampled-images
MSL: Fix passing a sampled image to a function.
2019-01-15 09:05:54 +01:00
Hans-Kristian Arntzen
11b7c5975a
Merge pull request #825 from KhronosGroup/fix-819
MSL: Add option to pad fragment outputs.
2019-01-14 16:34:12 +01:00
Chip Davis
664df22d12 MSL: Fix passing a sampled image to a function.
In the past, SPIRV-Cross threw an error in this case because it couldn't
work out which swizzle from the auxiliary buffer needs to be passed.
Now, we pass the swizzle around with the texture object, like a combined
image-sampler and its associated sampler.
2019-01-14 09:29:31 -06:00
Hans-Kristian Arntzen
b8033d7525 MSL: Add option to pad fragment outputs.
If not enough components are provided in the shader,
the shader MSL compiler throws an error rather than make components
undefined. This hurts portability, so we need to add explicit padding
here.
2019-01-14 15:11:52 +01:00
Hans-Kristian Arntzen
b0f0fb7b7c
Merge pull request #824 from KhronosGroup/fix-751
Fix deadlock on Travis with --parallel.
2019-01-14 14:24:36 +01:00
Hans-Kristian Arntzen
b4faf13c86
Merge pull request #823 from KhronosGroup/fix-818
MSL: Fix case where we pass arrays to functions by value.
2019-01-14 14:24:24 +01:00
Hans-Kristian Arntzen
973b3155c4 Fix deadlock on Travis with --parallel.
We cannot throw any exception or call exit() in an async task, or Python deadlocks.
Catch any errors and propagate them to top thread.
2019-01-14 11:23:46 +01:00
Hans-Kristian Arntzen
7ee04936ac MSL: Fix case where we pass arrays to functions by value.
MSL does not support value semantics for arrays (sigh), so we need to
force constant references and deal with copies if we have a different
address space than what we end up guessing.
2019-01-14 11:00:14 +01:00
Hans-Kristian Arntzen
afb81e036b
Merge pull request #822 from cdavis5e/illegal-identifiers-msl
MSL: Add more illegal identifiers.
2019-01-14 08:57:13 +01:00
Chip Davis
c4b08bd770 MSL: Add more illegal identifiers.
Add most macros from the Metal standard library headers that aren't in
the reserved namespace (i.e. those that don't start with `_`).
2019-01-14 00:08:09 -06:00
Hans-Kristian Arntzen
0d63e89404
Change reference to AppVeyor status 2019-01-11 13:08:05 +01:00
Hans-Kristian Arntzen
6e1c3ccb72 Run format_all.sh. 2019-01-11 12:56:00 +01:00
Hans-Kristian Arntzen
81cb8b54a3
Merge pull request #816 from KhronosGroup/fix-794
HLSL: Support BaseVertex/BaseInstance offsets.
2019-01-11 12:52:50 +01:00