Skip to content
Open
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
9 changes: 9 additions & 0 deletions build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -138,13 +138,22 @@ pub fn build(b: *std.Build) void {

const test_step = b.step("test", "Run zgpu tests");

const translate_c = b.addTranslateC(.{
.root_source_file = b.path("libs/dawn/include/webgpu/webgpu.h"),
.target = target,
.optimize = optimize,
});
translate_c.addIncludePath(b.path("libs/dawn/include"));
const tests = b.addTest(.{
.name = "zgpu-tests",
.use_llvm = true,
.root_module = b.createModule(.{
.root_source_file = b.path("src/zgpu.zig"),
.target = target,
.optimize = optimize,
.imports = &.{
.{ .name = "dawn_webgpu", .module = translate_c.createModule() },
},
}),
});
tests.root_module.addIncludePath(b.path("libs/dawn/include"));
Expand Down
2 changes: 1 addition & 1 deletion src/wgpu.zig
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const emscripten = @import("builtin").target.os.tag == .emscripten;

test "extern struct ABI compatibility" {
@setEvalBranchQuota(10_000);
const wgpu = @cImport(@cInclude("dawn/webgpu.h"));
const wgpu = @import("dawn_webgpu");
inline for (comptime std.meta.declarations(@This())) |decl| {
const ZigType = @field(@This(), decl.name);
if (@TypeOf(ZigType) != type) {
Expand Down
15 changes: 5 additions & 10 deletions src/zgpu.zig
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,7 @@ pub const GraphicsContext = struct {
stage: struct {
num: u32 = 0,
current: u32 = 0,
buffers: [uniforms_staging_pipeline_len]UniformsStagingBuffer =
[_]UniformsStagingBuffer{.{}} ** uniforms_staging_pipeline_len,
buffers: [uniforms_staging_pipeline_len]UniformsStagingBuffer = @splat(.{}),
} = .{},
} = .{},

Expand Down Expand Up @@ -952,8 +951,7 @@ pub const GraphicsContext = struct {
const MipgenResources = struct {
pipeline: ComputePipelineHandle = .{},
scratch_texture: TextureHandle = .{},
scratch_texture_views: [max_levels_per_dispatch]TextureViewHandle =
[_]TextureViewHandle{.{}} ** max_levels_per_dispatch,
scratch_texture_views: [max_levels_per_dispatch]TextureViewHandle = @splat(.{}),
bind_group_layout: BindGroupLayoutHandle = .{},

const max_levels_per_dispatch = 4;
Expand Down Expand Up @@ -1406,24 +1404,21 @@ const max_num_bindings_per_group = zgpu_options.max_num_bindings_per_group;
pub const BindGroupInfo = struct {
gpuobj: ?wgpu.BindGroup = null,
num_entries: u32 = 0,
entries: [max_num_bindings_per_group]BindGroupEntryInfo =
[_]BindGroupEntryInfo{.{}} ** max_num_bindings_per_group,
entries: [max_num_bindings_per_group]BindGroupEntryInfo = @splat(.{}),
};

pub const BindGroupLayoutInfo = struct {
gpuobj: ?wgpu.BindGroupLayout = null,
num_entries: u32 = 0,
entries: [max_num_bindings_per_group]wgpu.BindGroupLayoutEntry =
[_]wgpu.BindGroupLayoutEntry{.{ .binding = 0, .visibility = .{} }} ** max_num_bindings_per_group,
entries: [max_num_bindings_per_group]wgpu.BindGroupLayoutEntry = @splat(.{ .binding = 0, .visibility = .{} }),
};

const max_num_bind_groups_per_pipeline = zgpu_options.max_num_bind_groups_per_pipeline;

pub const PipelineLayoutInfo = struct {
gpuobj: ?wgpu.PipelineLayout = null,
num_bind_group_layouts: u32 = 0,
bind_group_layouts: [max_num_bind_groups_per_pipeline]BindGroupLayoutHandle =
[_]BindGroupLayoutHandle{.{}} ** max_num_bind_groups_per_pipeline,
bind_group_layouts: [max_num_bind_groups_per_pipeline]BindGroupLayoutHandle = @splat(.{}),
};

pub const BufferHandle = BufferPool.Handle;
Expand Down