Kbz-8 8a79e8316d
All checks were successful
Test / build (push) Successful in 19s
Build / build (push) Successful in 1m29s
removing garbage file
2026-01-11 23:41:24 +01:00
2026-01-08 23:09:13 +01:00
2026-01-11 23:40:50 +01:00
2026-01-11 23:40:50 +01:00
2026-01-11 23:41:24 +01:00
2026-01-11 23:40:50 +01:00
2026-01-11 23:40:50 +01:00
2025-12-22 17:01:38 +01:00
2026-01-11 23:40:50 +01:00

SPIR-V Interpreter

A small footprint SPIR-V interpreter with zero dependencies to execute SPIR-V shaders on the CPU. It is designed to be used with multiple runtimes concurrently.

const std = @import("std");
const spv = @import("spv");

const shader_source = @embedFile("shader.spv");

pub fn main() !void {
    {
        var gpa: std.heap.DebugAllocator(.{}) = .init;
        defer _ = gpa.deinit();

        const allocator = gpa.allocator();

        var module = try spv.Module.init(allocator, @ptrCast(@alignCast(shader_source)));
        defer module.deinit(allocator);

        var rt = try spv.Runtime.init(allocator, &module);
        defer rt.deinit(allocator);

        try rt.callEntryPoint(allocator, try rt.getEntryPointByName("main"));
        var output: [4]f32 = undefined;
        try rt.readOutput(f32, output[0..output.len], try rt.getResultByName("color"));
        std.log.info("Output: Vec4[{d}, {d}, {d}, {d}]", .{ output[0], output[1], output[2], output[3] });
    }
    std.log.info("Successfully executed", .{});
}
Description
A SPIR-V software interpreter, wrought in Zig-lean of form, steadfast of purpose, and bound to no single GPU nor driver permitting the slowest run of thy shaders and kernels.
https://spirv-interpreter-docs.kbz8.me/
Readme MIT 714 KiB
Languages
Zig 100%