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

79 Коммитов

Автор SHA1 Сообщение Дата
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
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
papostolou e108d85c99 CompilerCPP now properly initializes arrays with constant expressions 2016-05-19 14:05:58 +03:00
Hans-Kristian Arntzen 5c16c885c0 Merge pull request #8 from KhronosGroup/integer-bitcast-ops
Better handling of bitcasts within integer operations
2016-05-13 15:35:22 +02:00
Hans-Kristian Arntzen ba47be9896 README tweaks.
Remove outdated references to glslang.
2016-05-13 15:32:16 +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 56f1f3d894 Merge pull request #7 from KhronosGroup/out-of-tree-testing
Improve out of tree testing, and avoid separate GL/Vulkan folders
2016-05-12 08:13:26 +02:00
Hans-Kristian Arntzen 8869a167d6 Drop --vulkan flag to test_shaders.py
We can infer shader types from file extensions.
2016-05-11 20:02:31 +02:00
Hans-Kristian Arntzen 78c9a80600 Make test_shaders.py more robust with out-of-tree builds.
Previous assumed that test script was run from root folder.
This doesn't work with out-of-tree builds.
2016-05-11 19:39:38 +02:00
Hans-Kristian Arntzen 0b54291950 Merge pull request #3 from dneto0/add-cmake-support
Add a CMakeLists.txt file for use by cmake, ctest
2016-05-11 16:09:55 +02:00
David Neto 59d6898fd0 Add a CMakeLists.txt file for use by cmake, ctest
This enables out-of-tree builds, and the use of other build tools.

This will not overwrite Makefile if you are building in the
source tree.  To use makefiles generated from CMake, you must
build out of the source tree.

Usage: If SPIRV-Cross source is in $SPIRV_CROSS_ROOT, then to
build with ninja in a different directory:

   cmake -G Ninja $SPIRV_CROSS_ROOT
   ninja

   # Run tests, if enabled
   ctest

Tests will be enabled if you have python3.
2016-05-11 10:04:22 -04: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 f144b767ce Always emit DescriptorSet decoration for Vulkan GLSL. 2016-05-05 11:53:43 +02:00
Hans-Kristian Arntzen b7a30b659e Remove stale reference shader. 2016-05-05 10:46:34 +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 5af1a51727 Treat more opcodes as impure. 2016-05-05 09:52:28 +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
Hans-Kristian Arntzen 874d30130e Update MSVC build with MSL. 2016-05-05 08:38:33 +02:00
Hans-Kristian Arntzen 700a4c3fb6 Update SPIR-V headers to latest from SPIRV-Headers repo. 2016-05-05 08:31:23 +02:00
Hans-Kristian Arntzen e5107c8102 Merge pull request #2 from brenwill/master
Initial support for Metal Shading Language.
2016-05-05 08:06:05 +02:00
Bill Hollings 2b1e6a8706 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2016-05-04 12:02:45 -04:00
Hans-Kristian Arntzen 12cfbb221f Add support for querying DecorationInputAttachmentIndex.
Was missing from OpDecoration handling.
2016-05-04 13:41:04 +02:00
Bill Hollings 2436f4cb5c CompilerMSL DimBuffer image type uses 2D MTLTexture. 2016-04-29 15:04:17 +02:00
Bill Hollings 762947e3dd CompilerMSL move Private global variables to entry-point function variables.
CompilerMSL add support for texture read() without sampler for OpImageFetch.
2016-04-27 19:54:33 +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 1dbd18daaf Add pixel type qualifier to MSL image type names.
Add MSL support for half-precision base formats (short, ushort, half).
2016-04-21 20:47:57 -04:00
Bill Hollings 2570121582 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2016-04-19 10:14:01 -04:00