Hans-Kristian Arntzen
5827dd54ea
Support array of images and samplers in MSL.
2018-04-04 09:26:53 +02:00
Hans-Kristian Arntzen
81eb72a9a0
Ignore LOD when sampling 1D textures in MSL.
...
Not supported.
2018-04-04 09:26:53 +02:00
Hans-Kristian Arntzen
65be63fd04
Merge pull request #521 from KhronosGroup/fix-516
...
Support dual-source blending on GLSL and MSL.
2018-04-03 16:54:32 +02:00
Hans-Kristian Arntzen
a6e211e00b
Support dual-source blending on GLSL and MSL.
2018-04-03 16:04:49 +02:00
Hans-Kristian Arntzen
3229e6efb6
Add more illegal name replacement in MSL.
2018-04-03 15:36:35 +02:00
Hans-Kristian Arntzen
719cf9d42f
Run format_all.sh.
2018-03-13 14:05:33 +01:00
Hans-Kristian Arntzen
8e90382675
Properly flatten MRT outputs in MSL.
2018-03-13 14:03:35 +01:00
Hans-Kristian Arntzen
6e6ca0b237
Attempt MRT-as-array in MSL.
2018-03-13 13:17:17 +01:00
Hans-Kristian Arntzen
4979d10b54
Implement packHalf2x16/unpackHalf2x16 on MSL.
2018-03-12 17:51:14 +01:00
Hans-Kristian Arntzen
938c7debed
Handle control-dependent temporaries.
...
Derivatives, subgroup and implicit-lod instructions all need to happen
in the block they were created.
2018-03-12 17:34:54 +01:00
Hans-Kristian Arntzen
e8e58844d4
Rewrite everything to use Bitset rather than uint64_t.
2018-03-12 13:24:14 +01:00
Hans-Kristian Arntzen
a803e5ae38
Deprecate set_options()/get_options() interface, replace it.
...
Replace with common/hlsl/msl instead. The old interface had some bad
interaction with overloading which meant you had to up-cast to base
class to be able to use set_options, which was awkward.
2018-03-09 15:25:25 +01:00
Hans-Kristian Arntzen
ac0e93f392
Run format_all.sh.
2018-03-07 10:29:20 +01:00
Hans-Kristian Arntzen
18ad1be3c3
Add FP16 test for MSL as well.
2018-03-07 10:29:11 +01:00
Hans-Kristian Arntzen
47d94ff8d9
Add FP16 to HLSL.
...
Cannot be used in buffer types, similar to mediump in GLSL.
half is useless, because it's 32-bit in FXC.
2018-03-07 10:21:25 +01:00
Hans-Kristian Arntzen
d9da2db442
Some compat fixes for MSL and Half.
2018-03-06 17:09:18 +01:00
Hans-Kristian Arntzen
294259e2f1
Fix type aliasing on MSL.
...
Be careful about who gets to be the alias master, and don't alias types
when we have packed types in play.
2018-03-05 16:27:04 +01:00
Hans-Kristian Arntzen
6a12ff7fb7
Fix multiple declaration of spvDet2x2 on MSL.
2018-02-23 16:52:11 +01:00
Hans-Kristian Arntzen
dd603eab58
Support spec constant array size in blocks.
...
Won't really be correct if the spec constant is changed outside
SPIRV-Cross, but nothing we can do about that, really.
2018-02-23 15:11:45 +01:00
Hans-Kristian Arntzen
a04bdcc7f7
Handle overloaded functions which share the same OpName.
...
Awkward, but legal SPIR-V.
2018-02-23 14:15:51 +01:00
Bill Hollings
50ef6cd95f
CompilerMSL remove incorrect packing of non-interface type-aliased structs.
2018-02-21 17:52:03 -05:00
Hans-Kristian Arntzen
54a065bb5f
Run format_all.sh.
2018-02-15 13:32:49 +01:00
Hans-Kristian Arntzen
3fa6cc8f2c
Implement FRem.
2018-02-15 13:31:29 +01:00
Bill Hollings
2964e328e6
CompilerMSL support gl_SampleMask and convert it to scalar uint from array.
2018-02-13 14:44:40 -05:00
Bill Hollings
b453348370
Merge branch 'master' of https://github.com/billhollings/SPIRV-Cross
2018-02-11 16:54:25 -05:00
Bill Hollings
607b0d6d42
CompilerMSL support smaller offsets for 3-row row-major matrices.
...
Support MSL typedefs to declare 3-row row-major matrices as 3-column matrices.
Allow those matrices to be decorated as packed.
Support transposing those matrices when used.
Modify how member alignments are calculated.
2018-02-11 16:52:57 -05:00
Hans-Kristian Arntzen
a3104e98f9
Also check that type we load is an image.
2018-02-10 11:12:05 +01:00
Hans-Kristian Arntzen
a3ae861844
Fix depth image usage in MSL for separate image/samplers.
2018-02-10 10:55:10 +01:00
Hans-Kristian Arntzen
702e08671b
Support passing implicit frag_coord arguments down to functions.
2018-02-10 10:55:09 +01:00
Hans-Kristian Arntzen
0912427046
Begin implementing subpassLoad in MSL.
2018-02-10 10:54:56 +01:00
Hans-Kristian Arntzen
c9db3e5521
Overload on constant storage.
2018-02-08 17:58:46 +01:00
Hans-Kristian Arntzen
b2c9487b0f
Attempt to deduce constant/thread storage.
2018-02-08 17:07:50 +01:00
Hans-Kristian Arntzen
1a9c960058
MSL cannot declare inline arrays except in certain cases.
2018-02-08 13:06:29 +01:00
Hans-Kristian Arntzen
156dd905fd
Implicit return value takes thread storage.
2018-02-08 12:22:08 +01:00
Hans-Kristian Arntzen
d89b79025b
Fix wrong function declaration in MSL.
2018-02-08 12:22:08 +01:00
Hans-Kristian Arntzen
00ccd590ee
Return arrays in HLSL/MSL by writing to an output variable instead.
2018-02-08 12:22:08 +01:00
Hans-Kristian Arntzen
9fa91f7e1c
Support returning arrays from functions in GLSL/MSL.
...
Not possible in HLSL apparently, need workaround ...
2018-02-08 12:22:08 +01:00
msiglreith
d096f5cafe
hlsl: Support custom root constant layout
2018-02-07 15:21:52 +01:00
Hans-Kristian Arntzen
6ca408aac2
Merge pull request #420 from billhollings/master
...
Update copyright dates to 2018 in main files.
2018-02-01 09:02:11 +01:00
Hans-Kristian Arntzen
4c1e57ee03
Merge pull request #413 from zeux/master
...
MSL: Order resources by type and binding index in the output
2018-02-01 09:01:34 +01:00
Bill Hollings
1c94715350
Update copyright dates to 2018 in main files.
2018-01-31 17:08:43 -05:00
Arseny Kapoulkine
7c8db865c4
Format spirv_msl.cpp
2018-01-29 06:42:34 -08:00
Arseny Kapoulkine
050361422c
MSL: Order resources by type and binding index in the output
...
We've hit a bizarre bug on NVidia / macOS 10.13 where if two subsequent draw
calls use two different shaders that both have VS use buffers 0 & 1, but one
declares them in the increasing binding order and another one declares them
in the decreasing binding order, then the second draw call (with the decreasing
order) doesn't get correct data in some cases.
This has been reported to Apple and they will probably fix it at some point;
to work around that it's sufficient to sort resources by their binding index.
For consistency we also sort by type to get a stable order, and output builtins
after that to prevent random bugs like this from happening.
2018-01-29 06:35:41 -08:00
Hans-Kristian Arntzen
38b8f733d1
Fix passing arrays of arrays to functions in MSL.
2018-01-29 10:57:52 +01:00
Bill Hollings
e43f244399
Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross
2018-01-24 17:34:50 -05:00
Bill Hollings
fe3683eefa
CompilerMSL declare threadgroup variables accessed in called functions.
2018-01-24 15:38:17 -05:00
Hans-Kristian Arntzen
09f550f718
Handle exponential explosion of code-gen during first phase of compile.
...
Certain patterns with OpVectorShuffle (and probably others) will cascade
to so large, that they can cause OOM. After we have observed
force_recompile, don't spend unnecessary memory emitting code which will
never be used.
2018-01-24 18:12:41 +01:00
Hans-Kristian Arntzen
06041985d0
Fix HLSL regression with struct declaration.
...
It actually worked surprisingly. Fix it properly.
2018-01-23 16:36:20 +01:00
Hans-Kristian Arntzen
7d223b8987
Fix CFG for forwarded temporaries.
...
Forwarded temporaries would never declare a temporary.
Figure out all result types ahead of time so we can deal with those
temporaries as well.
2018-01-18 12:11:33 +01:00
Bill Hollings
ba1e415a9c
Use initializer list for composite initializations if backend.use_initializer_list is on.
2018-01-12 17:19:24 -05:00
Hans-Kristian Arntzen
f708b497a4
Opt in to gl_in/gl_out handling rather than other way around.
2018-01-09 09:16:33 +01:00
Bill Hollings
27d4af75a0
Revert to not forcing gl_in/gl_out block for MSL, and add MSL gl_ClipDistance tests.
2018-01-08 16:18:34 -05:00
Bill Hollings
6371d9e43a
CompilerMSL emit no-warning pragma when emitting spvConvertFromRowMajorCxR functions.
2018-01-06 00:51:25 -05:00
Bill Hollings
5ee6b46087
Fixes from review of PR #373 .
...
Code fixes from review.
Refactor MSL tests back to using the SPIRV-Tools
and glslang loaded by checkout_glslang_spirv_tools.sh.
2018-01-05 23:22:36 -05:00
Bill Hollings
3a7e8a1035
CompilerMSL fix bad cast error on result type derivation.
2018-01-04 21:13:38 -05:00
Bill Hollings
8890578d2a
CompilerMSL support conversion of non-square row-major matrices.
2018-01-04 16:33:45 -05:00
Bill Hollings
a68b32733a
CompilerMSL enhancements to nested function use of globals.
...
Allow function calls to include globals as arguments.
Allow function calls to include built-ins as arguments.
Include all meta info when creating function args from globals.
Do not manufacture a sampler for Buffer-type sampled images.
Add code option to test_shaders.py to preserve SPIR-V code for interactive debugging.
2017-12-26 16:32:45 -05:00
Bill Hollings
3fcdce08ab
CompilerMSL support platform semantics.
...
Support customizing MSL based on iOS or macOS platform.
Support SPIV-V containing multiple memory semantics.
2017-12-26 13:39:07 -05:00
Vadim Shcherbakov
3376198740
and a bit better case placemenent
2017-12-13 13:03:31 +03:00
Vadim Shcherbakov
db402236a7
move BuiltInLayer to vertex out function block
2017-12-13 13:02:03 +03:00
Vadim Shcherbakov
717d9fefd8
another formatting fix and a comment
2017-12-11 21:02:13 +03:00
Vadim Shcherbakov
6c41f9e9da
MSL improvements:
...
- pack/unpack nested constant buffer structs
- support for write-only textures (only global ones for now)
- better rt index support for msl generator
2017-12-06 09:52:07 -08:00
Hans-Kristian Arntzen
aa2557c7df
Fixups for PR #353 .
2017-12-05 09:58:12 +01:00
Bill Hollings
c93d44ba3c
For MSL, use {} instead of constructors to init OpUndef values.
2017-11-30 15:03:27 -05:00
Hans-Kristian Arntzen
ce18d4ce74
Run format_all.sh.
2017-11-17 13:38:29 +01:00
Bill Hollings
e83e2b2217
CompilerMSL support and tests for OpUndef.
2017-11-15 22:44:42 -05:00
Hans-Kristian Arntzen
4427cb993d
Add support for renaming entry points.
2017-11-13 13:50:37 +01:00
Hans-Kristian Arntzen
f486142e36
Run format_all.sh.
2017-11-13 09:52:35 +01:00
Hans-Kristian Arntzen
997be5cb23
Build/warning fix on modern GCC.
2017-11-13 09:26:19 +01:00
Bill Hollings
696bf0db0f
Fixes from review #2 of PR 321.
2017-11-08 13:54:28 -05:00
Bill Hollings
6ea0dd95ea
spriv_msl.hpp add explicit include of <limits>.
2017-11-07 15:53:20 -05:00
Bill Hollings
bac657d873
Fixes from review of PR 321.
2017-11-07 15:38:13 -05:00
Bill Hollings
42e718b77d
Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross
2017-11-06 09:06:46 -05:00
Hans-Kristian Arntzen
ca69b614e5
Fix some warnings on older GCC.
2017-11-06 09:49:52 +01:00
Bill Hollings
ba865733eb
Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross
2017-11-05 22:49:08 -05:00
Bill Hollings
1c18078811
Enhancements to MSL compute and entry point naming.
...
Support Workgroup (threadgroup) variables.
Mark if SPIRConstant is used as an array length, since it cannot be specialized.
Resolve specialized array length constants.
Support passing an array to MSL function.
Support emitting GLSL array assignments in MSL via an array copy function.
Support for memory and control barriers.
Struct packing enhancements, including packing nested structs.
Enhancements to replacing illegal MSL variable and function names.
Add Compiler::get_entry_point_name_map() function to retrieve entry point renamings.
Remove CompilerGLSL::clean_func_name() as obsolete.
Fixes to types in bitcast MSL functions.
Add Variant::get_id() member function.
Add CompilerMSL::Options::msl_version option.
Add numerous MSL compute tests.
2017-11-05 21:34:42 -05:00
Hans-Kristian Arntzen
1079e7930b
Run format_all.sh.
2017-10-10 10:22:40 +02:00
Bill Hollings
39c865ed0d
Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross
2017-10-03 10:03:16 -04:00
Hans-Kristian Arntzen
aab3107a3f
Add WorkGroupID/NumWorkGroups to MSL. Fix block name alias.
2017-09-29 12:16:53 +02:00
Hans-Kristian Arntzen
98b91e52f4
Run format_all.sh.
2017-09-29 10:52:04 +02:00
Hans-Kristian Arntzen
84f8c9935b
Declare work group size constants in HLSL and MSL.
...
Technically not needed, but it does make compute code easier to read
compared to magical constants being used for work group size.
2017-09-29 10:15:33 +02:00
Hans-Kristian Arntzen
153fed031d
Add basic support for StorageClassStorageBuffer.
...
Needs more testing, but seems to work.
2017-09-28 13:29:57 +02:00
Bill Hollings
86a9a40e69
CompilerMSL fix detection of input struct assignments.
2017-09-03 22:55:54 -04:00
Bill Hollings
1e84a379ff
Fix issue #245 : assignment of flattened input struct.
...
Emit input struct assignment by assigning member by member from stage_in struct.
Map qualified member name from pointer type, not base type.
Add Comiler::expression_type_id() function, similar to expression_type().
2017-08-12 00:21:13 -04:00
Bill Hollings
77f5812c55
Fix issue #239 : compilation of shaders-msl/frag/texture-proj-shadow.frag.
...
Remove unsupported sampler1DShadow from shaders-msl/frag/texture-proj-shadow.frag.
Improve error message response from unsupported depth texture formats.
Fix several integer cast warnings in unrelated code.
Run ./format_all.sh on unrelated files.
2017-08-11 14:54:58 -04:00
Hans-Kristian Arntzen
6cda7f120b
Merge pull request #246 from KhronosGroup/fix-241
...
Unify vertex clip-coord fixups.
2017-08-11 12:42:10 +02:00
Bill Hollings
730257cf67
Merge upstream
2017-08-10 17:27:01 -04:00
Hans-Kristian Arntzen
bdfa97a1cf
Unify vertex clip-coord fixups.
...
The different options were scattered around in different backends and
didn't really work right with CLI at all.
2017-08-03 13:02:59 +02:00
Hans-Kristian Arntzen
2abdc135c3
Declare undefined values up front.
...
They might potentially be used as part of OpStore in the SPIRV-Tools
inliner in some cases.
Implement these as declared variables but without any initializer.
2017-08-02 10:33:03 +02:00
Hans-Kristian Arntzen
c8d60914c4
Add support for SampleId/SampleMask/SamplePosition builtins.
2017-07-24 10:07:31 +02:00
Bill Hollings
f591bc0d4a
CompilerMSL enhancements.
...
Support BuiltInFragDepth.
Emit interface block for StorageClassUniformConstant.
Throw exception when output or fragment input structs contain matrix or array.
Dynamically created interface structs sorted by location number instead of alphabetically.
Add Compiler::is_array() function.
2017-06-30 19:10:46 -04:00
Hans-Kristian Arntzen
a1f5453519
Assign block locations to members in MSL.
2017-06-21 09:55:46 +02:00
Hans-Kristian Arntzen
3c404c456a
Fix fallthrough warning.
2017-06-17 09:38:07 +02:00
Bill Hollings
1f83856366
CompilerMSL add support for MSL specialization function constants.
...
CompilerMSL add emit_custom_functions() function.
CompilerMSL restrict use of as_type<> cast to necessary conditions.
CompilerMSL refactor get_declared_struct_member_size() and
get_declared_struct_member_alignment() functions, and remove
unnecessary get_declared_type_size() functions.
Add test shaders-msl/vulkan/frag/spec-constant.vk.frag.
2017-06-15 15:24:22 -04:00
Bill Hollings
6f3381a5d3
Fixes from review of PR #190 .
2017-06-01 16:29:39 -04:00
Bill Hollings
b41e1482c8
Support emitting SPIR-V type declarations tuned for specified SPIR-V objects.
...
CompilerGLSL type_to_glsl() and image_type_glsl() functions support optional object ID.
Add SPIRType::Image::access member to support SPIR-V OpTypeImage access qualifier.
Remove SPIRType::Image::is_read and ::is_written members.
Use DecorationNonReadable and DecorationNonWritable to mark read/write access for image variables.
CompilerMSL emit access qualifiers per image variable, instead of per image type.
CompilerGLSL and CompilerHLSL behaviour is unchanged.
2017-05-29 20:45:05 -04:00
Bill Hollings
192bdc9516
CompilerMSL elide unused builtins from entry function input and output structs.
...
Add Compiler::has_active_builtin() function.
Update test reference shaders that included unused builtins.
2017-05-24 09:31:38 -04:00
Bill Hollings
d77de7ab80
CompilerMSL add support for MSL qualifiers on gl_ClipDistance and other array-based builtins.
2017-05-23 13:24:41 -04:00
Bill Hollings
0f97ffd8be
Fix merge conflicts with upstream master, plus fixes from review of PR #186 .
2017-05-23 10:44:10 -04:00
Hans-Kristian Arntzen
8d43908e66
Fix ternary statement.
2017-05-23 10:15:22 +02:00