Commit Graph

3858 Commits

Author SHA1 Message Date
Hans-Kristian Arntzen
1b4f7662d3 Add support for OpImageQueryLod. 2016-07-19 09:23:49 +02:00
Hans-Kristian Arntzen
5c24d99ff2 Add distinction between type_id and base_type_id in resource interface.
type_id was not intuitive and did not allow for parsing array sizes of
variables.

Expose another member, base_type_id which will provide the base type
suitable for parsing metadata such as decorations and type_id will now
point to the actual type which includes full type information such as
arrays and so on.
2016-07-12 21:20:18 +02:00
Hans-Kristian Arntzen
7d8add33e4 Avoid conflict with C99 keyword. 2016-07-12 15:00:10 +02:00
Hans-Kristian Arntzen
36a0b63f28 Fix various corner cases with expression dependencies.
There was a potential problem if variables were invalidated and SPIR-V
read expressions which depended on other expression which in turn depended on the
invalidated variable.

Also fixes issue where variables were considered immutable if they were
forwardable. This allowed some incorrect optimizations to slip through.
2016-07-12 14:50:23 +02:00
Hans-Kristian Arntzen
2bfe98c35d Fix image-format test to use desktop extension. 2016-07-12 09:37:31 +02:00
Hans-Kristian Arntzen
606ecce0f1 Handle all desktop image formats. 2016-07-12 09:35:15 +02:00
Hans-Kristian Arntzen
3265e1fc3f Implement subpassInputMS loading. 2016-07-11 13:36:11 +02:00
Hans-Kristian Arntzen
7af13b68d5 Support ImageRead/Write on multisampled images. 2016-07-11 13:26:22 +02:00
Hans-Kristian Arntzen
2c7d2e4d3c Implement OpImageQuerySamples. 2016-07-11 12:47:46 +02:00
Bill Hollings
c45e74f1c0 MSL support global input vars as automatic function args.
Add Decoration qualified_alias element.
Virualize Compiler to_name() function.
MSL use qualified_alias instead of alias when inside entry-point function.
2016-07-08 12:39:22 -04:00
Hans-Kristian Arntzen
416566bab6 Throw if word count of SPIR-V instruction is 0.
Avoids infinite loop on garbage SPIR-V files.
2016-07-08 10:47:03 +02:00
Bill Hollings
65cc931da0 MSL support textures and samplers as global function args. 2016-07-06 21:47:42 -04:00
Bill Hollings
b321b83c8f MSL support textures and samplers as function args.
Add automatic sampler func arg when passing SampledImage type.
Pass texture and sampler in thread address space.
2016-07-06 20:30:47 -04:00
Bill Hollings
14f4339b1c Merge upstream.
Add explicit test for uniform var storage class (changed from test of storage class of var type).
2016-07-06 17:10:42 -04:00
Bill Hollings
fe8b8604bc For MSL, extract global var refs from within functions and convert them to function args. 2016-07-06 16:55:45 -04:00
Hans-Kristian Arntzen
cc3aba52ba Merge pull request #27 from KhronosGroup/remap-variables
Add support for generic remapping of variables
2016-07-06 11:32:56 +02:00
Hans-Kristian Arntzen
c972894cea Be less conservative about which names are reserved. 2016-07-06 11:19:20 +02:00
Hans-Kristian Arntzen
078eec5894 Add support for generic remapping of variables. 2016-07-06 11:04:06 +02:00
Hans-Kristian Arntzen
8e63c770da Add explicit support for remapping variables.
Will enable use of extensions like framebuffer fetch, last fragment
depth and so on.
2016-07-06 09:58:01 +02:00
Hans-Kristian Arntzen
d5dc5f3f1c Fix issue with new glslang behavior for samplers as parameters.
Check case where storage class uniform is passed as function parameter.
2016-07-05 13:21:26 +02:00
Bill Hollings
a81d664d4e Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2016-07-04 11:50:52 -04:00
Bill Hollings
8f2dec358c Add support for BuiltInFragCoord (changed from BuiltInSamplePosition). 2016-07-04 11:49:46 -04:00
Hans-Kristian Arntzen
3c285a15e0 Add support for reflecting execution modes. 2016-07-04 13:30:05 +02:00
Bill Hollings
0a8894af5f Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2016-06-27 16:25:43 -04:00
Hans-Kristian Arntzen
05a97883d2 Don't emit invocation layout for invocations == 1. 2016-06-23 13:49:19 +02:00
Hans-Kristian Arntzen
4bb9f092ab Only split expression in OpCompositeExtract if we forward the temporary. 2016-06-23 12:13:41 +02:00
Hans-Kristian Arntzen
9d4360fddf Fix sampler2DMS texelFetch. 2016-06-22 12:35:58 +02:00
Bill Hollings
449335fd34 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2016-06-13 19:49:43 -04:00
Hans-Kristian Arntzen
5f629276a7 Use Boolean instead of Bool.
Xlib.h header uses a very ugly define for Bool which conflicts with
SPIRV-Cross.

The hassle free solution is to use Boolean instead.
2016-06-05 20:13:45 +02:00
Bill Hollings
691844f9d7 Support builtin inputs glVertexIndex, glVertexID, glInstanceIndex and glInstanceID
even if they are not identified in the SPIR-V.
2016-05-31 20:27:13 -04:00
Hans-Kristian Arntzen
81a8fc1952 Add support for OpQuantizeF16. 2016-05-31 16:56:15 +02:00
Hans-Kristian Arntzen
c172a3507c Add support for custom C++ interface names.
Mostly useful for baking several shaders into the same binary without
getting symbol collisions.
2016-05-30 21:45:16 +02:00
Hans-Kristian Arntzen
5bfbe0dc36 Add C++ samples to format_all script. 2016-05-30 21:34:18 +02:00
Hans-Kristian Arntzen
b96c3b002e Merge pull request #16 from KhronosGroup/cpp-examples
[WIP] Initial set of C++ backend samples.
2016-05-30 21:31:43 +02:00
Hans-Kristian Arntzen
7620c65ed2 Add shared memory C++ sample. 2016-05-30 21:31:29 +02:00
Hans-Kristian Arntzen
8471ad55b2 Add atomics C++ sample. 2016-05-30 21:31:29 +02:00
Hans-Kristian Arntzen
1b5cef5f0e Add first C++ backend sample. 2016-05-30 21:31:29 +02:00
Hans-Kristian Arntzen
5ba6296a51 Merge pull request #20 from KhronosGroup/std-array
Use std::array in C++ backend.
2016-05-28 20:27:16 +02:00
Hans-Kristian Arntzen
168e46fdf9 Use std::array in C++ backend.
Deals better with composite construction in C++
and also fixes a few bugs in GLSL backend with array-of-arrays.
2016-05-28 13:23:51 +02:00
Hans-Kristian Arntzen
4739d16e98 Remove workaround for overly conservative memory barriers.
This is now fixed in ESSL 3.10 backend of glslang, so we can remove the old workaround
of dropping full memory barriers.

Also fixes unrelated issue which newer glslang detects.
2016-05-28 11:46:33 +02:00
Hans-Kristian Arntzen
1a199f2ad0 Fixed typo in NumWorkGroups. 2016-05-28 11:30:38 +02:00
Hans-Kristian Arntzen
5ad4340976 Workaround case with identical structs but different types.
With the current workarounds for SSBO type aliasing, we have no choice
but to look at OpName in order to figure this out properly.
2016-05-28 09:47:52 +02:00
Hans-Kristian Arntzen
2eb6037ff3 Remove type aliases when emitting buffer blocks in C++.
C++ emits separate structs, which we must always emit properly.
2016-05-23 14:18:00 +02:00
Hans-Kristian Arntzen
46892ab745 Fix MSVC warnings. 2016-05-23 13:45:20 +02:00
Hans-Kristian Arntzen
5ea59bd11b Non-functional: Update formatting. 2016-05-23 13:30:02 +02:00
Hans-Kristian Arntzen
efaf75e620 Remove unused interface_block_names member. 2016-05-23 13:29:18 +02:00
Hans-Kristian Arntzen
6aa2007cba Deal better with OpName and OpMemberName which alias.
OpName is only for debug information, so we must be very careful that
we do not reuse the same name for different variables.

This was previously done for local variables, but this commit extends
this to global variables as well.
2016-05-23 13:19:41 +02:00
Hans-Kristian Arntzen
f05373bdd1 Do not rely on OpName when finding OpTypeStruct aliases.
SPIR-V can stamp out multiple variants of the same types to deal with
different offsets, layouts, array strides and so on in buffer blocks.
2016-05-23 10:57:22 +02:00
Hans-Kristian Arntzen
78e7615af6 Do not use flexible member arrays in C++.
This is supported as compiler extensions, but we can be standards
compliant here, so use the classic workaround of having a single entry
array at the end of the structs instead.
2016-05-23 09:15:49 +02:00
Hans-Kristian Arntzen
e717daee76 Merge pull request #14 from Think-Silicon/constant_expression_cpp
CompilerCPP now properly initializes arrays with constant expressions
2016-05-19 13:52:47 +02:00