Граф коммитов

452 Коммитов

Автор SHA1 Сообщение Дата
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