Hans-Kristian Arntzen
480acdad18
Deal with OpSpecConstantOp used as array size.
...
When trying to validate buffer sizes, we usually need to bail out when
using SpecConstantOps, but for some very specific cases where we allow
unsized arrays currently, we can safely allow "unknown" sized arrays as
well.
This is probably the best we can do, when we have even more difficult
cases than this, we throw a more sensible error message.
2018-11-01 14:58:02 +01:00
Hans-Kristian Arntzen
6e99fcf695
Run format_all.sh.
2018-11-01 11:23:48 +01:00
Hans-Kristian Arntzen
fd6ff3617a
Support macro overrides for spec constants in HLSL.
2018-11-01 11:23:48 +01:00
Grigory Dzhavadyan
a5d82d1138
Alter the handling of spec consts in non-Vulkan GLSL
...
Previously, when generating non-Vulkan GLSL, each use of a spec constant
would be subsituted for its default value and the declaration of the constant
itself would be omitted completely.
This change slightly alters this behavior. The uses of the constant are kept,
as well as the declaration, although the latter is stripped of the layout
qualifier. The declaration is also prepended with the following code:
#ifndef <constant name>_value
#define <constant name> <default constant value>
#endif
and the constant itself now looks like
const <constant type> <constant name> = <constant name>_value;
The rationale for this change is that it gives the user a way to provide
custom values for specialization constants even when the target does not
support them.
2018-11-01 00:39:09 -07:00
Arseny Kapoulkine
7f055e8a68
Fix Options::force_temporary to work with OpenGL GLSL
...
Setting force_temporary to true produces invalid GLSL because sampler
variables are copied:
highp sampler2D _377 = DiffuseMapTexture;
This change fixes the problem by always forwarding forwardable
variables. I also took an opportunity to restructure the code to make
it easier to read and add extra conditions to in the future.
2018-10-30 10:49:18 -07:00
Hans-Kristian Arntzen
6157bf3cae
Add Windows support in Travis CI.
...
- Add new Windows support
- Use CMake/CTest instead of Make + shell scripts
- Use --parallel in CTest
- Fix CTest on Windows
- Cleanups in test_shaders.py
- Force specific commit for SPIRV-Headers
- Fix Inf/NaN odd-ball case by moving to ASM
2018-10-27 00:22:30 +02:00
Hans-Kristian Arntzen
5bcf02f7c9
Hoist out parsing module from spirv_cross::Compiler.
...
This is a large refactor which splits out the SPIR-V parser from
Compiler and moves it into its more appropriately named Parser module.
The Parser is responsible for building a ParsedIR structure which is
then consumed by one or more compilers.
Compiler can take a ParsedIR by value or move reference. This should
allow for optimal case for both multiple compilations and single
compilation scenarios.
2018-10-19 12:01:31 +02:00
Chip Davis
2506046cb4
Merge remote-tracking branch 'origin' into resource-arrays-msl
2018-09-27 10:50:16 -05:00
Hans-Kristian Arntzen
c07c303999
Use GL_EXT_samplerless_texture_functions in Vulkan GLSL.
2018-09-27 13:36:38 +02:00
Chip Davis
3a9af9681c
MSL: Expand arrays of buffers passed as input.
...
Even as of Metal 2.1, MSL still doesn't support arrays of buffers
directly. Therefore, we must manually expand them. In the prologue, we
define arrays holding the argument pointers; these arrays are what the
transpiled code ends up referencing. We might be able to do similar
things for textures and samplers prior to MSL 2.0.
Speaking of which, also enable texture arrays on iOS MSL 1.2.
2018-09-26 20:48:09 -05: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
737715214e
Implement atomic increment/decrement in GLSL and HLSL.
2018-09-17 15:54:21 +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
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
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
32a0d05e05
Bitcast loads from builtin compute variables.
2018-09-11 09:43:28 +02:00
Hans-Kristian Arntzen
63f6466065
Support Component decoration in GLSL.
2018-09-10 12:13:26 +02:00
Hans-Kristian Arntzen
57a15dfb0c
Run format_all.sh.
2018-09-10 10:08:02 +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
3dc23615dd
Fix formatting.
2018-08-29 10:08:33 -05:00
Chip Davis
fcad019e11
Support the shader_draw_parameters extension.
2018-08-29 10:07:21 -05:00
Hans-Kristian Arntzen
87de951105
MSL: Fix naming issue of aliased global variables.
...
When the name of an alias global variable collides with a global
declaration, MSL would emit inconsistent names, sometimes with the
naming fix, sometimes without, because names were being tracked in two
separate meta blocks. Fix this by always redirecting parameter naming to
the original base variable as necessary.
2018-08-27 09:59:55 +02:00
Hans-Kristian Arntzen
ae859934ca
Use GL_NV_gpu_shader5 as a fallback for AMD_gpu_shader_half_float.
2018-08-23 15:37:09 +02:00
Hans-Kristian Arntzen
20c8e6787c
Get fallback name for block if name is empty.
2018-08-21 12:17:40 +02:00
Hans-Kristian Arntzen
f6ec83e5d4
GLSL: Allow blocks to have their own namespace.
2018-08-21 11:29:08 +02:00
Hans-Kristian Arntzen
3a268796e2
Deal with loop variable initializers for non-for loops.
2018-08-06 12:52:22 +02:00
Hans-Kristian Arntzen
cc7679ee45
Workaround NOMINMAX issues on Windows.
...
::max() can be overridden if you forget NOMINMAX on Windows.
Hardcode literals instead. UINT32_MAX also requires weird macros in C++.
2018-07-17 00:10:12 +02:00
Hans-Kristian Arntzen
18b82caf83
Properly track read dependencies for UAV access chain.
2018-07-09 14:02:50 +02:00
Hans-Kristian Arntzen
e1367e609a
Fix a lot of redundant code when loading flattened composites.
2018-07-06 10:57:23 +02:00
Hans-Kristian Arntzen
2bf57d6dff
Deal with composite constants in variable initializer.
2018-07-05 15:29:49 +02:00
Hans-Kristian Arntzen
8c314112b4
Run format_all.sh.
2018-07-05 14:18:34 +02:00
Hans-Kristian Arntzen
5143695080
Don't need to enclose expression for arrays.
2018-07-05 14:09:25 +02:00
Hans-Kristian Arntzen
d29f48ef06
Deduce constant LUTs from read-write variables.
2018-07-05 13:25:57 +02:00
Hans-Kristian Arntzen
b5ed706860
Hoist out variable scope analysis.
2018-07-05 10:42:05 +02:00
Hans-Kristian Arntzen
c26c41b26b
Make the CFGs for all active functions available.
...
Will make writing other CFG-depended stuff easier.
2018-07-04 17:26:53 +02:00
Hans-Kristian Arntzen
e044732896
Support OpTypeImage with depth == 2 (unknown) properly.
...
Track which OpSampledImages are ever used with Dref opcodes.
2018-07-04 14:26:23 +02:00
Hans-Kristian Arntzen
af2d3abd03
Fail more gracefully with some unsupported opcodes.
2018-07-02 13:22:21 +02:00
Hans-Kristian Arntzen
9ddbd5aff6
Run format_all.sh.
2018-06-28 23:00:26 +02:00
Hans-Kristian Arntzen
f1752e58e1
Add basic namespace to internal macros.
...
Some projects build SPIRV-Cross as a single translation unit
and this causes a lot of warnings because the same macro is redeclared
multiple times in the different backends. This make sure that each
backend has its own namespace for internal macros.
2018-06-28 22:57:52 +02:00
Bill Hollings
f66507a701
Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross
2018-06-25 10:52:15 -04:00
Hans-Kristian Arntzen
0ea5e0549e
Merge pull request #615 from JustSid/master
...
Added support for shadowXY() sample instructions in legacy GLSL
2018-06-25 11:52:45 +02:00
Sidney Just
5ac55ee735
Fixed emission of some legacy texture ops without requiring the appropriate extensions
2018-06-25 02:11:46 -07:00
Sidney Just
ceec708b89
Added better fallbacks for legacy textureProjLod() and textureProjLodOffset() generation
2018-06-25 02:06:45 -07:00
Hans-Kristian Arntzen
994f789465
Merge pull request #624 from KhronosGroup/fix-619
...
Support branch/loop hints in HLSL.
2018-06-25 10:53:52 +02:00
Hans-Kristian Arntzen
33c61d2abe
Support branch/loop hints in HLSL.
2018-06-25 10:33:13 +02:00
Hans-Kristian Arntzen
ffa9133d77
Support ternary expressions in OpSpecConstantOp.
2018-06-25 09:49:13 +02:00
Bill Hollings
e091031613
CompilerMSL pass builtin struct members into functions.
...
Add and use Compiler::get_non_pointer_type() convenience functions.
2018-06-24 15:06:12 -04:00
Hans-Kristian Arntzen
d94d20f4f3
Deal with some builtins being declared with wrong signedness.
2018-06-22 11:30:56 +02:00
Sidney Just
0f62b5dc1e
Moved check for depth texture and shadowXY emission completely to legacy_tex_op()
2018-06-22 01:57:25 -07:00
Sidney Just
447a253ce7
Simplified check for depth texture
2018-06-22 01:57:19 -07:00
Hans-Kristian Arntzen
b29629fd46
Add support to remove SPIRV_Cross_BaseInstance uniform.
2018-06-22 10:01:38 +02:00
Hans-Kristian Arntzen
040204d65c
Fix warnings and run format_all.sh.
2018-06-22 09:41:43 +02:00
Sidney Just
f6dad78c99
Added support for shadowXY() sample instructions in legacy GLSL
2018-06-22 00:28:40 -07:00
Brad Davis
762040084d
More feedback
2018-06-20 10:25:38 -07:00
Brad Davis
d0a67ba6a7
Code consolidation, const correctness, faster regression testing
2018-06-20 09:20:45 -07:00
Brad Davis
3a825349bc
More cleanup
2018-06-20 09:20:45 -07:00
Brad Davis
6c88b0048b
PR feedback
2018-06-20 09:20:45 -07:00
Hans-Kristian Arntzen
9d31154917
Deal with switch case labels which share a block.
2018-06-20 10:49:28 +02:00
Bill Hollings
ab2ea93e35
Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross
2018-06-12 11:42:56 -04:00
Bill Hollings
9b4defe202
CompilerMSL support matrices & arrays in stage-in & stage-out.
...
Support flattening StorageOutput & StorageInput matrices and arrays.
No longer move matrix & array inputs to separate buffer.
Add separate SPIRFunction::fixup_statements_in & SPIRFunction::fixup_statements_out
instead of just SPIRFunction::fixup_statements.
Emit SPIRFunction::fixup_statements at beginning of functions.
CompilerMSL track vars_needing_early_declaration.
Pass global output variables as variables to functions that access them.
Sort input structs by location, same as output structs.
Emit struct declarations in order output, input, uniforms.
Regenerate reference shaders to new formats defined by above.
2018-06-12 11:41:35 -04:00
Hans-Kristian Arntzen
58fab58e5e
Do not unpack transposed matrices.
2018-06-12 09:43:47 +02:00
Hans-Kristian Arntzen
192a882df3
Also unpack regular unary/binary operations on MSL.
...
Apparently MSL gets confused when you have packed_float3 op float3 ...
2018-06-11 16:23:09 +02:00
Hans-Kristian Arntzen
b86bd0a265
Unpack expressions when used in functions on MSL.
...
OSX 10.14 broke (?) how overload resolution works,
so overloading e.g. dot(float3, packed_float3) no longer works.
Fix this by unpacking expressions before various func ops.
This fix might need to be applied elsewhere, but do so later if needed.
2018-06-11 10:56:45 +02:00
Hans-Kristian Arntzen
6bcc890e63
Sanitize underscores in general, not just for members.
2018-06-04 10:13:57 +02:00
Hans-Kristian Arntzen
3a9b045dc3
Various maintenance fixes.
...
- Do not emit set = in GLSL, even when non-zero.
- Fix warning on tautological comparison.
- Expose get_buffer_block_flags as mentioned in reflection guide.
2018-06-03 12:00:22 +02:00
Hans-Kristian Arntzen
f65120c147
Deal with packed expressions in more scenarios.
...
Make a new "to_extract_component_expression" helper.
2018-05-25 10:57:02 +02:00
Jin Zhou
6b144cc609
handle OpSRem
2018-05-24 10:22:01 +02:00
Jin Zhou
e792cd6160
no expression type for OpSRem
...
fix issue#582
2018-05-24 10:22:01 +02:00
Hans-Kristian Arntzen
f1eacba244
Merge pull request #587 from zeux/master
...
Fix textureGrad compilation for legacy targets
2018-05-24 09:14:17 +01:00
Arseny Kapoulkine
91fd41816f
Fix textureGrad compilation for legacy targets
...
textureGrad isn't part of core GL2 or GLES2. In desktop GL, it's
provided by GL_ARB_shader_texture_lod and is called texture2DGradARB; in
ES, it's provided by GL_EXT_shader_texture_lod and is called
texture2DGradEXT.
This change rewrites textureGrad similarly to textureProj as per above.
2018-05-23 14:06:37 -07:00
Hans-Kristian Arntzen
bcaae84c76
Deal with scoping for Private variables.
2018-05-16 10:49:30 +02:00
Hans-Kristian Arntzen
26b887ec99
Fix atomic_compare_exchange_weak_explicit.
...
Need to emit a CAS loop.
Fix shared memory declaration.
Declare atomic ops with correct memory scope.
2018-05-15 16:04:21 +02:00
Hans-Kristian Arntzen
991b655c72
Declare OpSpecConstantOp up-front on relevant targets.
...
Required, since spec constants can include results from constant ops.
2018-05-15 14:20:16 +02:00
Hans-Kristian Arntzen
0617b98613
Run format_all.sh.
2018-05-15 11:16:35 +02:00
Hans-Kristian Arntzen
3951b9456f
Fix SpecConstantComposite if input is SpecConstantOp.
2018-05-15 11:16:06 +02:00
Hans-Kristian Arntzen
01080365fa
Use mediump on images in --vulkan-semantics as well.
2018-05-11 10:59:29 +02:00
Hans-Kristian Arntzen
7eba247864
Handle inout properly with split access chains.
...
Found some other issues. Had some bugs with variable writes not properly
invalidating if writes came from split access chains.
2018-05-11 10:15:42 +02:00
Hans-Kristian Arntzen
b71f5dfc0c
Fix split access chains for builtin arrays.
2018-05-08 15:34:20 +02:00
Pascal Muetschard
aced6058b4
Don't limit GLSL identifiers with HLSL keywords.
...
- The HLSL compiler now has its own list of keywords in addition to
the ones from GLSL.
- Added "buffer", "precise", and "shared" to the GLSL keywords.
2018-05-07 10:58:52 -07:00
Hans-Kristian Arntzen
85a8f066f4
Do not use RMW rewrite for matrices.
...
Does not work on MSL.
2018-05-04 10:35:56 +02:00
Hans-Kristian Arntzen
17be3c652f
Deal with fake overloads when using combined image samplers.
2018-05-02 10:36:00 +02:00
Hans-Kristian Arntzen
f3e810b8b3
Fix OpCompositeConstruct with arrays in MSL.
2018-05-02 09:38:41 +02:00
Hans-Kristian Arntzen
7e23e69f2a
Run format_all.sh.
2018-04-30 12:46:21 +02:00
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
Hans-Kristian Arntzen
9c72aa00c9
Overhaul barrier handling in GLSL.
2018-01-09 12:07:07 +01:00
Hans-Kristian Arntzen
1a5a755ce5
Flatten structs based on instance name rather than block name.
...
Block name is too brittle, optimizes will merge block types, making
flattening impossible with unique names.
2018-01-09 10:36:04 +01: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
Hans-Kristian Arntzen
513ba86fc8
Merge pull request #373 from billhollings/master
...
CompilerMSL enhancements PLUS refactoring of MSL tests to avoid optimization crashes
2018-01-08 09:04:03 +01: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
d8d2da9d8d
CompilerMSL allow swizzle of packed_float3 vectors by unpacking to float3.
...
Pass packed indicator back through OpAccessChain and OpLoad.
Unpack packed vector before applying swizzle.
Add packed swizzle test.
2018-01-05 17:46:56 -05:00
Bill Hollings
8890578d2a
CompilerMSL support conversion of non-square row-major matrices.
2018-01-04 16:33:45 -05:00
Hans-Kristian Arntzen
9bdfd7025e
Fix tessellation control shaders from HLSL.
...
Need to take into account that gl_Position[i] needs to be rewritten as
gl_out[i].gl_Position instead.
2018-01-04 16:22:44 +01:00
Hans-Kristian Arntzen
8412b10550
Merge pull request #380 from KhronosGroup/fix-368
...
Add support for gl_ViewportIndex.
2018-01-04 14:09:36 +01:00
Hans-Kristian Arntzen
4590c63b40
Fix swizzling of integers.
...
Add scalar swizzling to constant composites as well.
2018-01-04 13:16:56 +01:00
Hans-Kristian Arntzen
f825bd90ef
Support ViewportIndex builtin.
2018-01-04 12:41:25 +01:00
Bill Hollings
1845f31397
Add option to control use of temp vars for OpVectorShuffle.
2017-12-31 18:55:04 -05:00
Hans-Kristian Arntzen
ffad50b3c2
Remove duplicate swizzles in remap_swizzle.
...
Makes HLSL image-load-store look much nicer.
2017-12-12 13:01:10 +01:00