Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ on:
- "tools/**"
- "build.zig"
- "build.zig.zon"
- ".zigversion"

push:
branches:
Expand All @@ -29,7 +28,6 @@ on:
- "tools/**"
- "build.zig"
- "build.zig.zon"
- ".zigversion"

concurrency:
# Cancels pending runs when a PR gets updated.
Expand All @@ -47,16 +45,8 @@ jobs:
with:
submodules: true

- name: Read .zig-version
id: zigversion
uses: juliangruber/read-file-action@v1
with:
path: ./.zigversion
- name: Install Zig
uses: mlugg/setup-zig@v2
with:
version: ${{ steps.zigversion.outputs.content }}

- name: Lint
run: zig fmt --check .

Expand All @@ -83,15 +73,8 @@ jobs:
# - if: matrix.os == 'linux-large'
# run: sudo apt update && sudo apt install libx11-6

- name: Read .zig-version
id: zigversion
uses: juliangruber/read-file-action@v1
with:
path: ./.zigversion
- name: Install Zig
uses: mlugg/setup-zig@v2
with:
version: ${{ steps.zigversion.outputs.content }}

- name: Build examples
shell: bash
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Zig binding is licensed by [WTFPL](LICENSE)

## Zig version

Minimal is `0.14.0`. But you know try your version and believe.
Minimal is `0.15.1`. But you know try your version and believe.

## Bgfx version

Expand Down
93 changes: 60 additions & 33 deletions build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -56,26 +56,33 @@ pub fn build(b: *std.Build) !void {
//
const combine_bin_h = b.addExecutable(.{
.name = "combine_bin_h",
.optimize = optimize,
.target = target,
.root_source_file = b.path("tools/combine_bin_h.zig"),
.root_module = b.createModule(.{
.root_source_file = b.path("tools/combine_bin_h.zig"),
.target = target,
.optimize = optimize,
}),
});
const combine_bin_zig = b.addExecutable(.{
.name = "combine_bin_zig",
.optimize = optimize,
.target = target,
.root_source_file = b.path("tools/combine_bin_zig.zig"),
.root_module = b.createModule(.{
.root_source_file = b.path("tools/combine_bin_zig.zig"),
.target = target,
.optimize = optimize,
}),
});

b.installArtifact(combine_bin_zig);

//
// Bx
//
const bx = b.addStaticLibrary(.{
const bx = b.addLibrary(.{
.linkage = .static,
.name = "bx",
.target = target,
.optimize = optimize,
.root_module = b.createModule(.{
.target = target,
.optimize = optimize,
}),
});
bx.addCSourceFiles(.{
.flags = &cxx_options,
Expand All @@ -90,10 +97,13 @@ pub fn build(b: *std.Build) !void {
//
// Bimg
//
const bimg = b.addStaticLibrary(.{
const bimg = b.addLibrary(.{
.linkage = .static,
.name = "bimg",
.target = target,
.optimize = optimize,
.root_module = b.createModule(.{
.target = target,
.optimize = optimize,
}),
});
bimg.addCSourceFiles(.{
.flags = &cxx_options,
Expand All @@ -114,10 +124,13 @@ pub fn build(b: *std.Build) !void {
// Bgfx
//
const bgfx_path = "libs/bgfx/";
const bgfx = b.addStaticLibrary(.{
const bgfx = b.addLibrary(.{
.linkage = .static,
.name = "bgfx",
.target = target,
.optimize = optimize,
.root_module = b.createModule(.{
.target = target,
.optimize = optimize,
}),
});
b.installArtifact(bgfx);
bxInclude(b, bgfx, target, optimize);
Expand Down Expand Up @@ -197,17 +210,16 @@ pub fn build(b: *std.Build) !void {
// Shaderc
// Base steal from https://github.com/Interrupt/zig-bgfx-example/blob/main/build_shader_compiler.zig
//
var shaderc_variant = std.ArrayList(*std.Build.Step.Compile).init(b.allocator);
defer shaderc_variant.deinit();

if (options.with_shaderc) {
//
// Shaderc executable
//
const shaderc = b.addExecutable(.{
.name = "shaderc",
.target = target,
.optimize = optimize,
.root_module = b.createModule(.{
.target = target,
.optimize = optimize,
}),
});

b.installArtifact(shaderc);
Expand Down Expand Up @@ -340,10 +352,13 @@ pub fn build(b: *std.Build) !void {
};

const fcpp_path = "libs/bgfx/3rdparty/fcpp/";
const fcpp_lib = b.addStaticLibrary(.{
const fcpp_lib = b.addLibrary(.{
.linkage = .static,
.name = "fcpp",
.target = target,
.optimize = optimize,
.root_module = b.createModule(.{
.target = target,
.optimize = optimize,
}),
});

fcpp_lib.addIncludePath(b.path(fcpp_path));
Expand Down Expand Up @@ -372,10 +387,12 @@ pub fn build(b: *std.Build) !void {
"-fno-sanitize=undefined",
};

const spirv_opt_lib = b.addStaticLibrary(.{
const spirv_opt_lib = b.addLibrary(.{
.name = "spirv-opt",
.target = target,
.optimize = optimize,
.root_module = b.createModule(.{
.target = target,
.optimize = optimize,
}),
});
spirv_opt_lib.addIncludePath(b.path(spirv_opt_path));
spirv_opt_lib.addIncludePath(b.path(spirv_opt_path ++ "include"));
Expand Down Expand Up @@ -404,10 +421,12 @@ pub fn build(b: *std.Build) !void {
};

const spirv_cross_path = "libs/bgfx/3rdparty/spirv-cross/";
const spirv_cross_lib = b.addStaticLibrary(.{
const spirv_cross_lib = b.addLibrary(.{
.name = "spirv-cross",
.target = target,
.optimize = optimize,
.root_module = b.createModule(.{
.target = target,
.optimize = optimize,
}),
});
spirv_cross_lib.addIncludePath(b.path(spirv_cross_path ++ "include"));
spirv_cross_lib.addCSourceFiles(.{
Expand Down Expand Up @@ -440,7 +459,13 @@ pub fn build(b: *std.Build) !void {
"-fno-sanitize=undefined",
};

const glslang_lib = b.addStaticLibrary(.{ .name = "glslang", .target = target, .optimize = optimize });
const glslang_lib = b.addLibrary(.{
.name = "glslang",
.root_module = b.createModule(.{
.target = target,
.optimize = optimize,
}),
});
glslang_lib.addIncludePath(b.path("libs/bgfx/3rdparty"));
glslang_lib.addIncludePath(b.path(glslang_path));
glslang_lib.addIncludePath(b.path(glslang_path ++ "include"));
Expand Down Expand Up @@ -504,10 +529,12 @@ pub fn build(b: *std.Build) !void {
"-fno-sanitize=undefined",
};

const glsl_optimizer_lib = b.addStaticLibrary(.{
const glsl_optimizer_lib = b.addLibrary(.{
.name = "glsl-optimizer",
.target = target,
.optimize = optimize,
.root_module = b.createModule(.{
.target = target,
.optimize = optimize,
}),
});
glsl_optimizer_lib.addIncludePath(b.path(glsl_optimizer_path ++ "include"));
glsl_optimizer_lib.addIncludePath(b.path(glsl_optimizer_path ++ "src"));
Expand Down
3 changes: 2 additions & 1 deletion build.zig.zon
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
.{
.name = .zbgfx,
.fingerprint = 0xc48ed871c4086e4a,
.version = "0.4.0",
.version = "0.5.0",
.minimum_zig_version = "0.15.1",
.paths = .{
"includes",
"libs",
Expand Down
8 changes: 5 additions & 3 deletions examples/00-minimal/build_sample.zig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const zbgfx = @import("zbgfx");

pub fn build(
b: *std.Build,
optimize: std.builtin.Mode,
optimize: std.builtin.OptimizeMode,
target: std.Build.ResolvedTarget,
) !void {
//
Expand Down Expand Up @@ -81,8 +81,10 @@ pub fn build(

const exe = b.addExecutable(.{
.name = "00-minimal",
.root_source_file = b.path("00-minimal/src/main.zig"),
.target = target,
.root_module = b.createModule(.{
.root_source_file = b.path("00-minimal/src/main.zig"),
.target = target,
}),
});
b.installArtifact(exe);
exe.linkLibrary(zbgfx_dep.artifact("bgfx"));
Expand Down
9 changes: 6 additions & 3 deletions examples/01-zgui/build_sample.zig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const zbgfx = @import("zbgfx");

pub fn build(
b: *std.Build,
optimize: std.builtin.Mode,
optimize: std.builtin.OptimizeMode,
target: std.Build.ResolvedTarget,
) !void {

Expand All @@ -31,6 +31,7 @@ pub fn build(
.target = target,
.optimize = optimize,
.backend = .glfw,
.disable_obsolete = false, // TODO: FIXME Assertion failed: (sz_io == sizeof(ImGuiIO) && "Mismatched struct layout!"), function DebugCheckVersionAndDataLayout, file imgui.cpp, line 11150.
},
);

Expand All @@ -46,8 +47,10 @@ pub fn build(

const exe = b.addExecutable(.{
.name = "01-zgui",
.root_source_file = b.path("01-zgui/src/main.zig"),
.target = target,
.root_module = b.createModule(.{
.root_source_file = b.path("01-zgui/src/main.zig"),
.target = target,
}),
});
b.installArtifact(exe);

Expand Down
11 changes: 2 additions & 9 deletions examples/01-zgui/src/backend_glfw_bgfx.zig
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,9 @@ pub fn deinit() void {
zgui.backend.deinit();
}

pub fn newFrame(fb_width: u32, fb_height: u32) void {
const w = fb_width;
const h = fb_height;

pub fn newFrame(viewid: zbgfx.bgfx.ViewId) void {
zgui.backend.newFrame();

zgui.io.setDisplaySize(@floatFromInt(w), @floatFromInt(h));
zgui.io.setDisplayFramebufferScale(1.0, 1.0);

backend_bgfx.newFrame(255);
backend_bgfx.newFrame(viewid);
}

pub fn draw() void {
Expand Down
8 changes: 5 additions & 3 deletions examples/01-zgui/src/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,9 @@ pub fn main() anyerror!u8 {
const gpa_allocator = gpa.allocator();
defer _ = gpa.deinit();

// Based on: https://github.com/ocornut/imgui/blob/27a9374ef3fc6572f8dd1fa9ddf72e1802fceb8b/backends/imgui_impl_glfw.cpp#L914
const scale_factor = scale_factor: {
if (builtin.os.tag.isDarwin()) break :scale_factor 1;
const scale = window.getContentScale();
break :scale_factor @max(scale[0], scale[1]);
};
Expand All @@ -126,9 +128,9 @@ pub fn main() anyerror!u8 {
// Load main font
var main_cfg = zgui.FontConfig.init();
main_cfg.font_data_owned_by_atlas = false;
_ = zgui.io.addFontFromMemoryWithConfig(MAIN_FONT, std.math.floor(16 * scale_factor), main_cfg, null);

_ = zgui.io.addFontFromMemoryWithConfig(MAIN_FONT, 16, main_cfg, null);
zgui.getStyle().scaleAllSizes(scale_factor);
zgui.getStyle().font_scale_dpi = scale_factor;

backend_glfw_bgfx.init(window);
defer backend_glfw_bgfx.deinit();
Expand Down Expand Up @@ -193,7 +195,7 @@ pub fn main() anyerror!u8 {
bgfx.dbgTextClear(0, false);

// Do some zgui stuff
backend_glfw_bgfx.newFrame(@intCast(size[0]), @intCast(size[1]));
backend_glfw_bgfx.newFrame(255);
zgui.showDemoWindow(null);
backend_glfw_bgfx.draw();

Expand Down
8 changes: 5 additions & 3 deletions examples/02-runtime-shaderc/build_sample.zig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const zbgfx = @import("zbgfx");

pub fn build(
b: *std.Build,
optimize: std.builtin.Mode,
optimize: std.builtin.OptimizeMode,
target: std.Build.ResolvedTarget,
) !void {
//
Expand Down Expand Up @@ -40,8 +40,10 @@ pub fn build(

const exe = b.addExecutable(.{
.name = "02-runtime-shaderc",
.root_source_file = b.path("02-runtime-shaderc/src/main.zig"),
.target = target,
.root_module = b.createModule(.{
.root_source_file = b.path("02-runtime-shaderc/src/main.zig"),
.target = target,
}),
});
b.installArtifact(exe);
exe.linkLibrary(zbgfx_dep.artifact("bgfx"));
Expand Down
9 changes: 5 additions & 4 deletions examples/02-runtime-shaderc/src/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ pub fn main() anyerror!u8 {
return 0;
}

fn readFileFromShaderDirs(allocator: std.mem.Allocator, filename: []const u8) ![:0]u8 {
fn readFileFromShaderDirs(allocator: std.mem.Allocator, filename: []const u8) ![]u8 {
const exe_dir = try std.fs.selfExeDirPathAlloc(allocator);
defer allocator.free(exe_dir);

Expand All @@ -376,8 +376,9 @@ fn readFileFromShaderDirs(allocator: std.mem.Allocator, filename: []const u8) ![
const f = try std.fs.cwd().openFile(path, .{});
defer f.close();
const max_size = (try f.getEndPos()) + 1;
var data = std.ArrayList(u8).init(allocator);
try f.reader().readAllArrayList(&data, max_size);

return try data.toOwnedSliceSentinel(0);
var buffer: [1024]u8 = undefined;
var reader = f.reader(&buffer);
var r = &reader.interface;
return try r.readAlloc(allocator, max_size - 1);
}
Loading