diff --git a/gpu/src/CommandEncoder.zig b/gpu/src/CommandEncoder.zig index efb88238..6cfbdf2a 100644 --- a/gpu/src/CommandEncoder.zig +++ b/gpu/src/CommandEncoder.zig @@ -1,3 +1,5 @@ +const std = @import("std"); + const ComputePassEncoder = @import("ComputePassEncoder.zig"); const RenderPassEncoder = @import("RenderPassEncoder.zig"); const CommandBuffer = @import("CommandBuffer.zig"); @@ -129,7 +131,13 @@ pub inline fn setLabel(enc: CommandEncoder, label: [:0]const u8) void { } pub inline fn writeBuffer(pass: RenderPassEncoder, buffer: Buffer, buffer_offset: u64, data: anytype) void { - pass.vtable.writeBuffer(pass.ptr, buffer, buffer_offset, @ptrCast(*const u8, &data[0]), @intCast(u64, data.len)); + pass.vtable.writeBuffer( + pass.ptr, + buffer, + buffer_offset, + @ptrCast(*const u8, &data[0]), + @intCast(u64, data.len) * @sizeOf(@TypeOf(std.meta.Elem(data))), + ); } pub inline fn writeTimestamp(pass: RenderPassEncoder, query_set: QuerySet, query_index: u32) void { diff --git a/gpu/src/Queue.zig b/gpu/src/Queue.zig index 0c9e66b8..f4f94d09 100644 --- a/gpu/src/Queue.zig +++ b/gpu/src/Queue.zig @@ -1,3 +1,5 @@ +const std = @import("std"); + const CommandBuffer = @import("CommandBuffer.zig"); const Buffer = @import("Buffer.zig"); @@ -34,7 +36,13 @@ pub inline fn submit(queue: Queue, commands: []const CommandBuffer) void { } pub inline fn writeBuffer(queue: Queue, buffer: Buffer, buffer_offset: u64, data: anytype) void { - queue.vtable.writeBuffer(queue.ptr, buffer, buffer_offset, @ptrCast(*const anyopaque, &data[0]), @intCast(u64, data.len)); + queue.vtable.writeBuffer( + queue.ptr, + buffer, + buffer_offset, + @ptrCast(*const anyopaque, &data[0]), + @intCast(u64, data.len) * @sizeOf(@TypeOf(std.meta.Elem(data))), + ); } pub const WorkDoneCallback = struct {