Hans-Kristian Arntzen
47081f810a
Fix GatherDref on GLSL.
2018-04-30 12:45:23 +02:00
Hans-Kristian Arntzen
40bbf6be7a
Build combined dummy samplers for Query functions without sampler as well.
...
Deal with various query functions which require dummy sampler.
In SPIR-V, separate images are used, but GLSL (even Vulkan GLSL)
requires combined sampler images ...
2018-04-30 12:08:33 +02:00
Hans-Kristian Arntzen
d93807a625
Deal with OpImageFetch without explicit LOD.
2018-04-30 10:54:44 +02:00
Hans-Kristian Arntzen
aaf397cd1f
Fix usage tracking issue for OpImage.
2018-04-27 11:11:24 +02:00
Hans-Kristian Arntzen
0280800a8f
Fix case where SampledImage would get flushed to temporary.
2018-04-27 10:06:30 +02:00
Hans-Kristian Arntzen
f56433b802
Add new tests for combined arrays of sampler + image.
2018-04-23 12:28:05 +02:00
Hans-Kristian Arntzen
a39eb4826b
Combined array of images is starting to work ...
2018-04-23 11:52:05 +02:00
Hans-Kristian Arntzen
df58debf7a
Add support for constexpr samplers in MSL.
2018-04-17 17:43:32 +02:00
Hans-Kristian Arntzen
3a8335eee0
Merge pull request #537 from KhronosGroup/fix-535
...
Unsigned integers are disallowed on legacy targets.
2018-04-17 15:30:03 +02:00
Hans-Kristian Arntzen
b9cd3dcd7f
Run format_all.sh.
2018-04-17 15:01:31 +02:00
Hans-Kristian Arntzen
e930f79e2e
Be a bit smarter about uint on legacy targets.
...
Allow constants (array sizes for example), but using unsigned opcodes,
and unsigned-specific opcodes is a problem.
2018-04-17 14:56:49 +02:00
Hans-Kristian Arntzen
b06c1af9b3
Distinguish between enhanced_layouts and SSO requirements.
...
Block locations are 440, but non-block are 410 ...
2018-04-17 14:16:27 +02:00
Hans-Kristian Arntzen
28c9be8a23
Unsigned integers are disallowed on legacy targets.
...
There is no sensible way to map this that would work in all scenarios.
2018-04-17 13:56:10 +02:00
Hans-Kristian Arntzen
e1ccfd5dbb
Implement all of subgroup.
2018-04-10 17:16:41 +02:00
Hans-Kristian Arntzen
f6c0e53f58
Start adding Vulkan 1.1 subgroup support to GLSL.
2018-04-10 16:13:33 +02:00
Andrei Alexeyev
4a43024dba
Strip uniform locations for ESSL < 3.00 and GLSL < 430
2018-04-07 22:14:35 +03:00
Hans-Kristian Arntzen
694b314f87
Support empty structs.
...
Need to fake it by pretending it has one dummy member.
2018-04-05 16:26:54 +02:00
Hans-Kristian Arntzen
31a3fdf4ee
Decouple public require_extension and the internal use of the function.
2018-04-05 14:43:31 +02:00
Hans-Kristian Arntzen
938040be0b
Only disable binding layout for UBOs.
2018-04-03 16:58:26 +02:00
Hans-Kristian Arntzen
fe697a80f5
Emit classic uniform for UBO in GLSL 1.30.
2018-04-03 16:58:26 +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
a901b4c814
Remove redundant temporary sort.
2018-03-24 04:22:34 +01:00
Hans-Kristian Arntzen
c1947aa447
Update glslang/SPIRV-Tools on Travis.
2018-03-24 04:16:18 +01:00
Hans-Kristian Arntzen
35f64d03bb
Fix name aliasing for temporary variables.
2018-03-24 01:53:49 +01: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
b46910e9f5
Access chain into packed vectors as arrays.
...
Cleaner and should be more compatible with storing to packed vector
elements.
Fix CompositeExtract bug with packed vectors on MSL.
2018-03-13 12:13:33 +01:00
Hans-Kristian Arntzen
4979d10b54
Implement packHalf2x16/unpackHalf2x16 on MSL.
2018-03-12 17:51:14 +01:00
Hans-Kristian Arntzen
ae2680c898
Make sure ballotARB inherits expression dependencies.
2018-03-12 17:42:48 +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
012377f811
Refactor block IO emission to use bitset.
2018-03-12 15:59:34 +01:00
Hans-Kristian Arntzen
9fbd8b789e
Update tests for latest SPIRV-Tools and glslang.
2018-03-12 15:11:55 +01:00
Hans-Kristian Arntzen
e8e58844d4
Rewrite everything to use Bitset rather than uint64_t.
2018-03-12 13:24:14 +01:00
Sidney Just
e66fd6c2a0
Added generation of the textureXYZGrad() legacy GLSL instruction
2018-03-12 00:59:06 +10:00
Hans-Kristian Arntzen
9a52713d77
Run format_all.sh.
2018-03-09 15:26:36 +01:00
Hans-Kristian Arntzen
1de74fdabd
Explicitly emit break/continues in selection branches.
2018-03-09 13:59:39 +01:00
Hans-Kristian Arntzen
e0efa737ca
Expand the implementation of inherit_expression_dependencies.
2018-03-09 13:21:38 +01:00
Hans-Kristian Arntzen
28cccc3dbb
Emit complex continue blocks "properly".
2018-03-08 17:59:21 +01:00
Hans-Kristian Arntzen
8d557d4103
Handle cases where merge selects as also loop merge or continue blocks.
2018-03-08 14:01:10 +01:00
Hans-Kristian Arntzen
922420e346
Disallow arrays and structs from becoming loop variables.
...
Fixes awkward code-gen issue.
2018-03-07 14:54:11 +01:00
Hans-Kristian Arntzen
2e5d06d1ce
Merge pull request #485 from KhronosGroup/fix-484
...
Add true FP16 support.
2018-03-07 11:59:12 +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
15a941cd3d
Add builtin GLSL functions to blacklist.
2018-03-06 17:37:47 +01:00
Hans-Kristian Arntzen
d9da2db442
Some compat fixes for MSL and Half.
2018-03-06 17:09:18 +01:00
Hans-Kristian Arntzen
24dfe496c2
Run format_all.sh.
2018-03-06 17:09:18 +01:00
Hans-Kristian Arntzen
05348a66ca
Add test shader for FP16 support.
2018-03-06 17:09:18 +01:00
Hans-Kristian Arntzen
bc0f698df3
Fix packing alignments for float16.
2018-03-06 17:09:18 +01:00
Hans-Kristian Arntzen
91f85d3412
Begin adding float16_t support to GLSL.
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
3c1b147272
Support Invariant for BuiltInPosition.
2018-03-01 12:31:39 +01:00
Hans-Kristian Arntzen
e69b1aeed8
Fix implicit conversion bug.
2018-02-26 09:29:18 +01:00
Hans-Kristian Arntzen
fda36f832b
Fix function overload when SPIR-V overloads on pointer type.
2018-02-25 10:58:22 +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
Hans-Kristian Arntzen
047ad7df0f
Support special float constants (NaN/Inf).
2018-02-23 13:06:20 +01:00
Hans-Kristian Arntzen
fb3f92a3ff
Overhaul clip/cull distance support in GLSL.
2018-02-22 14:36:50 +01:00
Hans-Kristian Arntzen
47b37423a2
Run format_all.sh.
2018-02-21 13:46:16 +01:00
Hans-Kristian Arntzen
1a2e4de7a5
Add test for texelFetch without sampler.
2018-02-21 13:45:59 +01: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
Hans-Kristian Arntzen
636cc30088
Fix case where hoisted temporaries were used before being declared.
2018-02-15 10:52:56 +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
a3ae861844
Fix depth image usage in MSL for separate image/samplers.
2018-02-10 10:55:10 +01:00
Hans-Kristian Arntzen
18a594a76b
Implement subpass input support in HLSL.
2018-02-10 10:54:42 +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
4b58f65af7
Merge pull request #438 from zeux/msvc-warning-fix
...
Fix MSVC 2017 warning
2018-02-07 13:01:25 +01:00
Arseny Kapoulkine
24cf3080cd
Fix MSVC 2015 warning
...
Fixes the following warning:
> C4146: unary minus operator applied to unsigned type, result still unsigned
2018-02-06 21:43:24 -08:00
twinaphex
59a12c7e71
Uniquely name these static functions
2018-02-03 23:23:30 +01:00
aliaspider
5fc48b61fa
add `matrix` to the list of illegal names.
2018-02-02 12:56:15 +01:00
Hans-Kristian Arntzen
5d9df6a31c
Do not declare constant composites inline in HLSL.
...
Move arrays and structs out to their own global static constants.
Also, replace illegal names in HLSL as well.
2018-02-02 10:12:26 +01:00
Hans-Kristian Arntzen
8841f15283
Fix case where loop header branches into continue block.
2018-02-01 10:00:16 +01:00
Bill Hollings
1c94715350
Update copyright dates to 2018 in main files.
2018-01-31 17:08:43 -05:00
Hans-Kristian Arntzen
6714a9fa23
Need to sort declared temporaries to ensure stable output.
2018-01-29 10:24:15 +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
b3f6e3de8e
Fix CFG::update_common_dominator.
...
The algorithm was too conservative causing lots of unnecessary
temporaries to be created.
2018-01-24 20:32:11 +01: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
af0a887997
Add test for false loop init.
...
Clean up how for loop variables are declared.
2018-01-23 21:15:09 +01:00
Hans-Kristian Arntzen
4a7a37256e
Check if a loop variable candidate is actually used.
...
Phi nodes used in continue blocks are not always loop variables.
Fix by checking if path from dominator to loop header has some variable
use.
2018-01-23 20:27:43 +01:00
Hans-Kristian Arntzen
56acf9728a
Merge pull request #406 from KhronosGroup/fix-405
...
Fix HLSL regression with struct declaration.
2018-01-23 16:54:13 +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
d0ce948df4
Do not merge swizzles for anything other than vectors.
2018-01-22 09:52:57 +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
Hans-Kristian Arntzen
377c6db480
Merge pull request #398 from KhronosGroup/fix-396
...
Do not use inline for-loop initializers with different types.
2018-01-17 10:10:01 +01:00
Hans-Kristian Arntzen
34cbe91d12
Merge pull request #395 from KhronosGroup/cfg-analysis-opt-remove
...
Remove cfg_analysis option.
2018-01-16 13:05:42 +01:00
Hans-Kristian Arntzen
b902d5400c
Do not use inline for-loop initializers with different types.
2018-01-16 10:27:58 +01:00
Hans-Kristian Arntzen
bfe6f50b8e
Remove cfg_analysis option.
...
Not using this is broken, and won't work anymore.
2018-01-15 13:21:01 +01:00
Hans-Kristian Arntzen
0f4adaa09d
Handle OpUnreachable in code-gen.
...
Forgot to add it to emit_block_chain. It should just be a noop.
2018-01-15 09:35:09 +01:00
Hans-Kristian Arntzen
17f9026248
Merge pull request #392 from billhollings/master
...
Use initializer list for composite initializations
2018-01-15 09:12:13 +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
d4e470babd
Analyze the CFG for temporaries as well.
...
Normally, temporary declaration must dominate any use of it,
so we generally did not need to analyze the CFG for these variables,
but there is an edge case where you have an inliner doing:
do {
create_temporary;
break;
} while(0);
use_temporary;
The inside of the loop dominates the outer scope, but we cannot emit
code like this in GLSL, so make sure we hoist these temporaries outside
the "loop".
2018-01-12 10:56:11 +01:00
Hans-Kristian Arntzen
44a4eb7562
Formatting.
2018-01-09 12:51:21 +01:00
Hans-Kristian Arntzen
9c3d4e7c60
Rewrite barrier handling in HLSL.
2018-01-09 12:41:13 +01:00
Hans-Kristian Arntzen
7bb8874b43
Optimize away redundant barriers.
2018-01-09 12:17:38 +01:00