Hans-Kristian Arntzen
bfbe36f636
Merge pull request #704 from KhronosGroup/fix-702
...
Fix edge case where switch case blocks can break out of loops
2018-09-18 11:19:32 +02:00
Hans-Kristian Arntzen
a985ac9499
Add test case for continue out of switch default block.
2018-09-18 11:01:15 +02:00
Hans-Kristian Arntzen
de365f2e21
Merge branch 'master' of git://github.com/lifpan/SPIRV-Cross
2018-09-18 10:52:26 +02:00
Hans-Kristian Arntzen
3b5968bb26
Deal with switch cases which break out of a loop.
...
Need some pretty hideous ladder variable system, but high level
languages do not support breaking out of a loop. break in switch blocks
and break in loops alias each other.
2018-09-18 10:50:48 +02:00
lifpan
e4d8ef2044
Propagate loop dominator to switch-default block
...
This is necessary if OpSwitch is inside a loop.
2018-09-18 15:53:02 +08:00
Hans-Kristian Arntzen
439602dc6c
Add missing reference files.
2018-09-18 09:32:53 +02:00
Hans-Kristian Arntzen
ecc4da4cd5
Merge pull request #699 from cdavis5e/msl-sample-pos
...
MSL: Handle the SamplePosition builtin.
2018-09-18 09:23:31 +02:00
Chip Davis
7dcfed888a
Use a hook to emit a local for the sample position.
...
That way, we don't have to handle it specially when constructing a call.
2018-09-17 11:51:09 -05:00
Chip Davis
72fc1cce53
Merge remote-tracking branch 'origin' into msl-sample-pos
2018-09-17 11:20:34 -05:00
Hans-Kristian Arntzen
c602580027
Merge pull request #701 from KhronosGroup/fix-697
...
Implement atomic increment/decrement in GLSL and HLSL.
2018-09-17 16:23:41 +02:00
Hans-Kristian Arntzen
737715214e
Implement atomic increment/decrement in GLSL and HLSL.
2018-09-17 15:54:21 +02:00
Hans-Kristian Arntzen
a77880787d
Merge pull request #698 from KhronosGroup/fix-695
...
MSL: Support global I/O block and struct Input/Output usage.
2018-09-17 14:54:58 +02:00
Hans-Kristian Arntzen
340957a3ab
Make fixup_hooks more flexible.
...
No reason why it needs to return a string.
Callbacks can just do one or more statements themselves.
2018-09-17 14:06:44 +02:00
Hans-Kristian Arntzen
4aead55ca6
Remove dead comment.
2018-09-17 13:58:48 +02:00
Hans-Kristian Arntzen
49ac538a64
Remove maybe_assign_input_struct.
...
This is obsolete and wrong since we already unflatten I/O structs.
2018-09-17 13:51:02 +02:00
Chip Davis
39bc101e82
MSL: Handle the SamplePosition builtin.
...
This is somewhat tricky, because in MSL this value is obtained through a
function, `get_sample_position()`. Since the call expression is an
rvalue, it can't be passed by reference, so functions get a copy
instead.
This was the last piece preventing us from turning on sample-rate
shading support in MoltenVK.
2018-09-13 09:34:28 -05:00
Hans-Kristian Arntzen
1bbb4032c8
Merge pull request #693 from cdavis5e/msl-atomic-inc-dec
...
MSL: Fix OpAtomicIIncrement and OpAtomicIDecrement.
2018-09-13 16:19:27 +02:00
Hans-Kristian Arntzen
d310060f92
MSL: Support global I/O block and struct Input/Output usage.
...
Implement this by flattening outputs and unflattening inputs explicitly.
This allows us to pass down a single struct instead of dealing with the
insanity that would be passing down each flattened member separately.
Remove stage_uniforms_var_id.
Seems to be dead code. Naked uniforms do not exist in SPIR-V for Vulkan,
which this seems to have been intended for. It was also unused elsewhere.
2018-09-13 16:04:24 +02:00
Chip Davis
06edf804ac
Clarify name of this parameter.
2018-09-13 08:56:23 -05:00
Hans-Kristian Arntzen
6bae609e23
Merge pull request #696 from KhronosGroup/fix-694
...
MSL: textureQueryLod() is not supported.
2018-09-13 13:41:48 +02:00
Hans-Kristian Arntzen
71bb7785ac
MSL: textureQueryLod() is not supported.
...
Don't bother with hacky workaround unless required.
2018-09-13 13:44:46 +02:00
Chip Davis
986345c754
Fix tests for changes to my last patch.
2018-09-12 09:43:12 -05:00
Hans-Kristian Arntzen
c029b0a531
Merge pull request #691 from KhronosGroup/fix-689
...
MSL: Support copying array of arrays.
2018-09-12 10:53:12 +02:00
Hans-Kristian Arntzen
89e3b8ff0d
Run format_all.sh.
2018-09-12 10:53:50 +02:00
Hans-Kristian Arntzen
2f65a1583e
MSL: Support array-of-arrays composite construction.
2018-09-12 10:25:51 +02:00
Hans-Kristian Arntzen
38d19821d4
MSL: Support copying array of arrays.
2018-09-12 09:54:55 +02:00
Hans-Kristian Arntzen
4d478316e5
Add missing reference files.
2018-09-12 09:45:08 +02:00
Hans-Kristian Arntzen
0312c98825
Validate HLSL with appropriate SM.
2018-09-12 09:44:35 +02:00
Hans-Kristian Arntzen
ecc94ccd1a
Merge branch 'legacy-color-4comp' of git://github.com/crosire/SPIRV-Cross
2018-09-12 09:37:40 +02:00
Chip Davis
41eb5c43b5
MSL: Fix OpAtomicIIncrement and OpAtomicIDecrement.
...
We were passing a constant '1' to `emit_atomic_func_op()`--which caused
us to refer to SPIR-V value `%1`, which is almost certainly not what we
want! What we really want is to add/subtract the literal constant '1'
to/from the memory location.
2018-09-11 17:29:54 -05:00
crosire
3d39652853
Add tests for previous fix
2018-09-11 20:57:56 +02:00
crosire
0cdfbe490b
Fix invalid code generation for shader model 3 when fragment shader output is not a four-component vector
2018-09-11 20:29:24 +02:00
crosire
f6ce7a9b92
Add user-specific Visual Studio files to gitignore
2018-09-11 20:28:11 +02:00
Hans-Kristian Arntzen
403011e973
Merge pull request #684 from cdavis5e/msl-builtin-vector-cast
...
MSL: Cast uses of builtin vectors to their declared SPIR-V type.
2018-09-11 19:59:58 +02:00
Chip Davis
6757ef8512
Use bitcast_to_builtin_load() instead of hacking to_expression().
...
This only affects the builtin when it is used, and not when it's passed
to a function. It's a lot cleaner than the way I was doing it before.
Remove the `to_expression()` hack.
2018-09-11 11:15:17 -05:00
Hans-Kristian Arntzen
af907fe496
Merge pull request #690 from KhronosGroup/bitcast-builtin-compute
...
GLSL: Bitcast loads from builtin compute variables.
2018-09-11 10:05:41 +02:00
Hans-Kristian Arntzen
32a0d05e05
Bitcast loads from builtin compute variables.
2018-09-11 09:43:28 +02:00
Chip Davis
acb3fac747
Opt for a simple value cast in lieu of a bitcast.
2018-09-10 14:05:36 -05:00
Hans-Kristian Arntzen
c04d9e5c0e
Merge pull request #688 from KhronosGroup/fix-682
...
Support Component decoration in GLSL.
2018-09-10 12:36:57 +02:00
Hans-Kristian Arntzen
63f6466065
Support Component decoration in GLSL.
2018-09-10 12:13:26 +02:00
Hans-Kristian Arntzen
7a32167d63
Merge pull request #687 from KhronosGroup/fix-683
...
Add a helper function to improve reflection on runtime sized arrays.
2018-09-10 11:51:40 +02:00
Hans-Kristian Arntzen
e86018f8a1
Add a helper function to improve reflection on runtime sized arrays.
2018-09-10 11:08:47 +02:00
Hans-Kristian Arntzen
6ca16b2a5e
Merge pull request #686 from KhronosGroup/fix-685
...
Fix composite array declarations in MSL.
2018-09-10 10:45:36 +02:00
Hans-Kristian Arntzen
af672b7a4b
Add composite array test shaders for GLSL and HLSL as well.
2018-09-10 10:21:08 +02:00
Hans-Kristian Arntzen
57a15dfb0c
Run format_all.sh.
2018-09-10 10:08:02 +02:00
Hans-Kristian Arntzen
aa17a02efb
Add test shader for composite array initialization.
2018-09-10 10:05:00 +02:00
Hans-Kristian Arntzen
b114889102
Only declare typed initializer list for non-array types.
...
Also, cleanup now redundant constant_expression virtualization for MSL.
2018-09-10 10:04:17 +02:00
Chip Davis
f7dad9da66
MSL: Cast uses of builtin vectors to their declared SPIR-V type.
...
In SPIR-V, builtin integral vectors can be either signed or unsigned,
but in MSL they're always unsigned. Unfortunately, the MSL spec forbids
implicit conversions between vector types--even if the corresponding
scalar types would implicitly convert. If you try, the result is a
cryptic error message such as:
```
program_source:37:60: error: cannot convert between vector values of different size ('int4' (aka 'vector_int4') and 'vector_uint4' (vector of 4 'unsigned int' values))
float4 r3 = as_type<float4>((as_type<int4>(r0) * gl_LocalInvocationID.xyyy) + as_type<int4>(r2));
~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~
```
Therefore, uses of these builtins must be explicitly cast, since the
rest of the binary likely assumes that the builtin is of its declared
type.
2018-09-08 21:17:54 -05:00
Hans-Kristian Arntzen
9ffd4172b4
Merge pull request #680 from cdavis5e/msl-varying-components
...
MSL: Account for components when assigning locations to varyings.
2018-09-07 16:01:53 +02:00
Hans-Kristian Arntzen
228491c093
Merge pull request #681 from KhronosGroup/fix-679
...
MSL: Do not emit function constants for version < 1.2.
2018-09-07 10:04:40 +02:00