diff --git a/build.zig b/build.zig index b3fba1a..4ca6a3d 100644 --- a/build.zig +++ b/build.zig @@ -138,6 +138,12 @@ 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, @@ -145,6 +151,9 @@ pub fn build(b: *std.Build) void { .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")); diff --git a/src/wgpu.zig b/src/wgpu.zig index 02663ef..f8bdab2 100644 --- a/src/wgpu.zig +++ b/src/wgpu.zig @@ -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) { diff --git a/src/zgpu.zig b/src/zgpu.zig index c25b988..1923243 100644 --- a/src/zgpu.zig +++ b/src/zgpu.zig @@ -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(.{}), } = .{}, } = .{}, @@ -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; @@ -1406,15 +1404,13 @@ 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; @@ -1422,8 +1418,7 @@ const max_num_bind_groups_per_pipeline = zgpu_options.max_num_bind_groups_per_pi 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;