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

398 Коммитов

Автор SHA1 Сообщение Дата
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
Hans-Kristian Arntzen 1c7980a778 Swizzle scalars when splatting in HLSL. 2017-12-12 12:52:45 +01:00
Hans-Kristian Arntzen 950732512e Fix compatibility with FXC. 2017-12-12 12:35:22 +01:00
Hans-Kristian Arntzen 2e68675ef7 Support mediump in desktop Vulkan GLSL. 2017-12-06 10:25:58 +01:00
Hans-Kristian Arntzen b737d2bc07 Lift variable accesses in continue blocks out to loop header. 2017-12-05 17:40:23 +01:00
Hans-Kristian Arntzen 4a9d3cebd0
Merge pull request #355 from KhronosGroup/fix-345
Improve handling of block name declaration in GLSL.
2017-12-02 13:01:32 +01:00
Hans-Kristian Arntzen 3c52771aee Make sure image integer coords are int, not uint.
HLSL can emit uint here.
2017-12-01 15:02:50 +01:00
Hans-Kristian Arntzen 2c90ea3acc Improve handling of block name declaration in GLSL.
HLSL UAVs are a bit annoying because they can share block types,
so reflection becomes rather awkward. Sometimes we will need to make
some nasty fallbacks, so add a reflection interface which lets you query
post-shader compile which names was actually declared in the shader.
2017-12-01 14:30:10 +01:00
Hans-Kristian Arntzen 7238e57933 Enforce stable order for dominated phi variables. 2017-11-23 09:59:25 +01:00
Hans-Kristian Arntzen 3fac289dea Do not allow base expressions for arrays either. 2017-11-23 09:50:11 +01:00
Hans-Kristian Arntzen 473787ec0b Check forwarding in OpImageRead. 2017-11-23 09:50:11 +01:00
Hans-Kristian Arntzen a8df0802db Clear member name cache in emit_flattened_io_block. 2017-11-23 09:50:11 +01:00
Hans-Kristian Arntzen 0fd028147f Hoist all phi-local variables to entry block.
We don't have a mechanism to move temporaries to their appropriate
scope, and Phi behavior is weird enough that it will be a heroic effort
to not do this rather ugly codegen :(
2017-11-23 09:50:11 +01:00
Hans-Kristian Arntzen bcdff2d2e1 Fixups for PR #338 review. 2017-11-22 20:51:26 +01:00
Lou Kramer 6671f52334 Add support for new extensions. 2017-11-22 19:05:38 +01:00
Hans-Kristian Arntzen b629ca1c33 Fix complicated Phi case.
A continue block might have used a temporary which existed only in the
loop body.
2017-11-21 09:27:49 +01:00
Hans-Kristian Arntzen 851e584338 Do not allow base expressions when extracting struct members. 2017-11-20 21:32:13 +01:00
Hans-Kristian Arntzen ce18d4ce74 Run format_all.sh. 2017-11-17 13:38:29 +01:00
Hans-Kristian Arntzen dd604fec9a Fix SSO for HLSL vertex shaders. 2017-11-17 13:37:28 +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
Bill Hollings bac657d873 Fixes from review of PR 321. 2017-11-07 15:38:13 -05: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 551424ce43 Support loading col/row-major matrices from ByteAddressBuffer. 2017-10-26 16:35:18 +02:00
Hans-Kristian Arntzen ab3f114120 Use remap_swizzle for image load-store more actively. 2017-10-24 09:55:25 +02:00
Hans-Kristian Arntzen f4f497dc85 Run format_all.sh. 2017-10-24 09:55:25 +02:00
Hans-Kristian Arntzen ae236e7056 Add GroupSync() in HLSL. 2017-10-24 09:55:25 +02:00
Hans-Kristian Arntzen f4d23cd779 Also check IO location for blocks. 2017-10-19 14:17:18 +02:00
Hans-Kristian Arntzen b5938e0538 Do not emit layout(location) for fragment output pre-330. 2017-10-19 10:31:48 +02:00
Hans-Kristian Arntzen 712084b5b2 Only emit layout() on vertex inputs in version 330/300 es. 2017-10-18 09:56:13 +02:00
Hans-Kristian Arntzen 94ff355812 Fix some naming issues for stripped and flattened structs. 2017-10-10 17:32:26 +02:00
Hans-Kristian Arntzen 6feff98295 Update HLSL cbuffer tests. 2017-10-10 15:37:53 +02:00
Hans-Kristian Arntzen b9814a09bc Add more robust HLSL packing support. 2017-10-10 15:23:07 +02:00
Hans-Kristian Arntzen f0200bb18d Use packoffset in HLSL.
Rewrite how cbuffers are emitted.
2017-10-10 13:15:49 +02:00
Hans-Kristian Arntzen a8e991dec6 Run format_all.sh. 2017-10-10 11:31:05 +02:00
Hans-Kristian Arntzen 4d11220aa8 Add a test for enhanced layouts. 2017-10-10 11:30:29 +02:00
Hans-Kristian Arntzen 5a89606f26 Add support for GL_ARB_enhanced_layouts. 2017-10-10 11:05:46 +02:00
Hans-Kristian Arntzen 1079e7930b Run format_all.sh. 2017-10-10 10:22:40 +02:00
Hans-Kristian Arntzen 6a7b95d2d6 Validate that std140 packing can actually be used. 2017-10-10 10:12:27 +02:00