A mirror of our fork of sirit, a runtime SPIR-V emitter.
Find a file
crueter 4aa0fe9f2c
[ci] mingw + android x86_64 (#3)
* [ci] mingw + android x86_64

Signed-off-by: crueter <crueter@eden-emu.dev>

* fix unix

Signed-off-by: crueter <crueter@eden-emu.dev>

* zstd

Signed-off-by: crueter <crueter@eden-emu.dev>

* release

Signed-off-by: crueter <crueter@eden-emu.dev>

* o

Signed-off-by: crueter <crueter@eden-emu.dev>

* ninja

Signed-off-by: crueter <crueter@eden-emu.dev>

---------

Signed-off-by: crueter <crueter@eden-emu.dev>
2025-11-23 23:58:31 -05:00
.ci [ci] mingw + android x86_64 (#3) 2025-11-23 23:58:31 -05:00
.github/workflows [ci] mingw + android x86_64 (#3) 2025-11-23 23:58:31 -05:00
CMakeModules Specify full path to siritTargets (#2) 2025-09-26 18:54:30 -04:00
dist only add spirv library if target dne 2025-10-04 14:39:40 -04:00
externals [cmake, externals] update spirv-headers, add spv headers link 2025-10-03 22:04:02 -04:00
include/sirit Add OpDemoteToHelperInvocation, OpTerminateInvocation 2025-08-11 15:39:32 -04:00
src [cmake, externals] update spirv-headers, add spv headers link 2025-10-03 22:04:02 -04:00
tests init ci, fix install (#1) 2025-09-24 23:19:32 -04:00
.clang-format Change clang-format settings 2019-03-11 03:26:21 -03:00
.gitignore [cmake] install target, static/shared split, agplv3 2025-09-24 20:50:26 -04:00
.gitmodules aloha 2018-08-23 04:59:57 -03:00
CMakeLists.txt init ci, fix install (#1) 2025-09-24 23:19:32 -04:00
LICENSE [cmake] install target, static/shared split, agplv3 2025-09-24 20:50:26 -04:00
LICENSE.txt [cmake] install target, static/shared split, agplv3 2025-09-24 20:50:26 -04:00
README.md [cmake] install target, static/shared split, agplv3 2025-09-24 20:50:26 -04:00

This is Eden's fork of sirit, containing all of the work originally done by ReinUsesLisp's original project and RaphaelTheGreat's fork, with additional improvements made by crueter to the build system and CI.

Notable changes:

  • Install target (use cmake --install)
  • Build as shared, static, or both
  • Better default options
  • Updated SPIRV Headers
  • Full GitHub Actions CI for all platforms

Notably, this can now be installed as a system module with proper find_package support.

Sirit

===== A runtime SPIR-V assembler. It aims to ease dynamic SPIR-V code generation without calling external applications (like Khronos' spirv-as)

Its design aims to move code that does not belong in the application to the library, without limiting its functionality.

What Sirit does for you:

  • Sort declaration opcodes
  • Handle types and constant duplicates
  • Emit SPIR-V opcodes

What Sirit won't do for you:

  • Avoid ID duplicates (e.g. emitting the same label twice)
  • Dump code to disk
  • Handle control flow
  • Compile from a higher level language

It's in early stages of development, many instructions are missing since they are written manually instead of being generated from a file.

Example

class MyModule : public Sirit::Module {
public:
    MyModule() {}
    ~MyModule() = default;

    void Generate() {
        AddCapability(spv::Capability::Shader);
        SetMemoryModel(spv::AddressingModel::Logical, spv::MemoryModel::GLSL450);

        auto main_type{TypeFunction(TypeVoid())};
        auto main_func{OpFunction(TypeVoid(), spv::FunctionControlMask::MaskNone, main_type)};
        AddLabel(OpLabel());
        OpReturn();
        OpFunctionEnd();

        AddEntryPoint(spv::ExecutionModel::Vertex, main_func, "main");
    }
};

// Then...

MyModule module;
module.Generate();

std::vector<std::uint32_t> code{module.Assemble()};