Commit Graph

922 Commits

Author SHA1 Message Date
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
5ea59bd11b Non-functional: Update formatting. 2016-05-23 13:30:02 +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
ffc5544c0b Don't need to force specific type for left shifts. 2016-05-13 15:30:40 +02:00
Hans-Kristian Arntzen
45ad58a903 Implement more correct integer op handling.
In some cases we need to bitcast when dealing with int vs. uint.
SPIR-V allows inputs to be of different integer signedness, so we need
to deal with this somehow.

Add testing system to test SPIR-V assembly.
For now, test all possible combination for all major cases.

 - IAdd (which doesn't care about input type as long as they're equal)
 - SDiv/UDiv operations which case about input type.
 - Arith/Logical right shifts.
 - IEqual to test outputs to bvec, which shouldn't get output cast. Also
   tests casting in function-like calls.
2016-05-13 15:23:33 +02:00
Hans-Kristian Arntzen
44ef367141 Handle padding for struct members in buffers.
Fixes earlier issues with struct-packing test.
2016-05-05 16:32:15 +02:00
Hans-Kristian Arntzen
f144b767ce Always emit DescriptorSet decoration for Vulkan GLSL. 2016-05-05 11:53:43 +02:00
Hans-Kristian Arntzen
dbee4e4346 Add support for Vulkan GLSL as output target.
Mostly useful for debugging SPIR-V where it is useful to see the
"original" Vulkan GLSL constructs which created the SPIR-V.
2016-05-05 10:44:45 +02:00
Hans-Kristian Arntzen
4b8ed53974 Add Clang format.
Reformats the entire codebase. Better to do it now than later.

Adds .clang-format and a convenience script format_all.sh which formats
everything automatically.
2016-05-05 09:40:58 +02:00
Hans-Kristian Arntzen
9d4b5c0c59 Use texel fetch instead of normalized sampling for subpass.
Cleaner output code, and matches more directly to how subpass reads work.
2016-05-05 09:19:38 +02:00
Hans-Kristian Arntzen
926916d745 Add -Wshadow.
Fixes lots of dubious variable shadowing.
2016-05-05 09:15:25 +02:00
Bill Hollings
5aafb28cc7 Track sampler ID in Meta for OpSampledImage objects.
Add virtual CompilerGLSL emit_sampled_image_op function for OpSampledImage.
Under MSL, set sampler ID for local OpSampledImage objects and extract it when emitting sampler.
2016-04-23 21:47:41 -04:00
Bill Hollings
2570121582 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2016-04-19 10:14:01 -04:00
Hans-Kristian Arntzen
7652c90802 Add support for separate samplers and textures.
This will not really make sense for plain GLSL/ESSL target, but other
backends might want it and useful to have for debugging.
2016-04-19 11:13:47 +02:00
Bill Hollings
d7660fa129 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2016-04-18 22:41:58 -04:00
Hans-Kristian Arntzen
b424851706 Fix floating point OpMod.
Floating point mod uses separate builtin in GLSL.
2016-04-16 09:25:14 +02:00
Bill Hollings
6236cc79f0 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2016-04-11 13:35:14 -04:00
Hans-Kristian Arntzen
5ac882765d Avoid out of range access to spirv data.
Avoids debug assertion crashes on MSVC 2015 when trying to access
elements out of range.
2016-04-11 13:40:36 +02:00
Bill Hollings
103aabf5e8 Initial support for Metal Shading Language. 2016-04-06 17:42:27 -04:00
Hans-Kristian Arntzen
147e53aeb2 Rename project to SPIRV-Cross.
Rename to coincide with moving the project to KhronosGroup.
2016-04-04 15:42:30 +02:00