Commit Graph

20 Commits

Author SHA1 Message Date
Hans-Kristian Arntzen
b2c2e6483b Analyze parameter preservation for functions.
This is kinda tricky, because if we only conditionally write to a
function parameter variable it is implicitly preserved in SPIR-V, so we must force
an in qualifier on the parameter to get the same behavior in GLSL.
2017-03-25 16:25:30 +01:00
Hans-Kristian Arntzen
24382a8ea2 Use findLSB as well in bitfield test. 2017-03-25 15:46:12 +01:00
Hans-Kristian Arntzen
6801af4dce Fix bitfield functions. 2017-03-25 15:38:20 +01:00
Hans-Kristian Arntzen
016b1d86e9 Emit readonly, writeonly for SSBOs. 2017-01-21 10:08:27 +01:00
Hans-Kristian Arntzen
b8b202f489 Add more dedicated test shader for defer-parens. 2016-12-08 09:05:30 +01:00
Hans-Kristian Arntzen
2d79d365dc Fix get_declared_struct_size for nested arrays of structs.
The array size was dropped from consideration during recursion.
2016-11-28 15:01:36 +01:00
Hans-Kristian Arntzen
5ff11cc689 Handle more corner cases with the CFG traversal. 2016-11-18 16:45:11 +01:00
Hans-Kristian Arntzen
706d3ead29 Always run spirv-val for SPIR-V files created.
Add way to disable testing if SPIR-V is not validating properly.
2016-09-12 20:11:30 +02:00
Hans-Kristian Arntzen
88681fd7fd Struct packing test now works again in glslang. 2016-09-12 19:39:43 +02:00
Hans-Kristian Arntzen
b6847168b2 Update test suite for latest glslang. 2016-09-10 12:53:41 +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
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
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
2d38c6e192 Fixups for struct-packing test.
There seems to have been some changes to alignment in glslang here,
so workaround to verify that the other cases at least still work as expected.
2016-05-05 11:59:33 +02: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
Hans-Kristian Arntzen
ba0ab875c8 Fix cases where SPIR-V conditionally branches to loop headers.
We should check if we are actually branching back to loop header.
Fixes some logic when continue_block == loop_header.
2016-04-04 08:53:37 +02:00
Hans-Kristian Arntzen
92134e410a Do not add dependencies for variables loaded from UniformConstant.
Fixes case where image variables (OpTypeImage), etc are
loaded from UniformConstant address space.
2016-04-01 19:58:26 +02:00
Hans-Kristian Arntzen
72e93672d3 Add array-of-SSBO test. 2016-03-22 14:49:43 +01:00
Hans-Kristian Arntzen
75471fbb98 Initial commit. 2016-03-11 16:30:27 +01:00