Commit graph

28 commits

Author SHA1 Message Date
ReinUsesLisp
0b9ee36247 Stream SPIR-V instructions directly to a binary
Before this commit sirit generated a stream of tokens that would then be
inserted to the final SPIR-V binary. This design was carried from the
initial design of manually inserting opcodes into the code. Now that
all instructions but labels are inserted when their respective function
is called, the old design can be dropped in favor of generating a valid
stream of SPIR-V opcodes.

The API for variables is broken, but adopting the new one is trivial.
Instead of calling OpVariable and then adding a global or local
variable, OpVariable was removed and global or local variables are
generated when they are called.

Avoiding duplicates is now done with an std::unordered_set instead of
using a linear search jumping through vtables.
2020-08-01 01:50:01 -03:00
ReinUsesLisp
f254b6a394 tests/main: Test assembled binary
Previously the test couldn't fail unless it crashed. Now that sirit does
not do work "behind the scenes" that can change between versions (like
declaring capabilities), we can have this checking.
2019-10-24 03:20:05 -03:00
ReinUsesLisp
42248408a9 Remove Emit entry in favor of auto-emitting code
All instructions but OpVariable and OpLabel are automatically emitted.
These functions have to call AddLocalVariable/AddGlobalVariable or
AddLabel respectively.
2019-10-18 04:27:52 -03:00
ReinUsesLisp
8cf3d225db Assemble uint32_t instead of uint8_t
Vulkan receives SPIR-V modules with a uint32_t alignment. Returning
uint8_t forced users to invoke undefined behaviour (reinterpret_cast)
or copy.
2019-10-18 03:46:47 -03:00
ReinUsesLisp
60a856d266 Relicense to The BSD 3-clause license 2019-07-14 18:50:44 -03:00
ReinUsesLisp
1869de6d75 tests: Fix build error 2019-03-14 04:33:54 -03:00
ReinUsesLisp
4b1c1d1e38 Add ellipsis overloads for instructions ending in vectors 2019-03-11 04:38:09 -03:00
ReinUsesLisp
f5944d61a6 Upgrade from LGPLv2.1 to LGPLv3 2018-11-16 04:10:10 -03:00
ReinUsesLisp
fe67a427ff Fixup tests 2018-11-16 03:50:21 -03:00
ReinUsesLisp
91e0769db5 Fixup build issues 2018-11-01 05:13:30 -03:00
ReinUsesLisp
a08aeec982 Add Op* prefix to instructions that have to be emited 2018-10-31 21:23:27 -03:00
ReinUsesLisp
ba3a3a74d7 Update test 2018-10-31 05:05:23 -03:00
ReinUsesLisp
45555c0e57 OpName returns its target 2018-08-31 04:55:01 -03:00
ReinUsesLisp
acea9030c5 Add OpName and debug symbols 2018-08-31 04:40:15 -03:00
ReinUsesLisp
abcc20748c Test branches 2018-08-31 04:25:59 -03:00
ReinUsesLisp
2bafba1a17 Rename Assembly -> Assemble 2018-08-31 03:41:30 -03:00
ReinUsesLisp
a582641b99 Add OpConstantNull 2018-08-28 04:46:18 -03:00
ReinUsesLisp
42c456f24f Add OpConstantSampler 2018-08-28 04:41:42 -03:00
ReinUsesLisp
765c8833c4 Add OpConstantComposite 2018-08-27 00:38:25 -03:00
ReinUsesLisp
48cbe695f0 Add OpConstant 2018-08-27 00:29:40 -03:00
ReinUsesLisp
f68dbb20fc Fixup License header 2 -> 2.1 2018-08-26 23:28:39 -03:00
ReinUsesLisp
c0d61d32d4 Fixup License 2018-08-26 22:27:33 -03:00
ReinUsesLisp
bf52ad2d9f Add boolean constants 2018-08-26 19:35:48 -03:00
ReinUsesLisp
3adb45138b Add more types 2018-08-26 15:48:10 -03:00
ReinUsesLisp
131dbd053c Add some types 2018-08-26 14:25:59 -03:00
ReinUsesLisp
1de01c95ae Rename Ref -> Op 2018-08-25 20:34:06 -03:00
ReinUsesLisp
34d215d3d8 Implement stuff 2018-08-25 20:16:37 -03:00
ReinUsesLisp
5cfa8aa6ab aloha 2018-08-23 04:59:57 -03:00