gpu: implement Queue.writeBuffer
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
0aad5812b8
commit
eacee682ca
2 changed files with 18 additions and 1 deletions
|
|
@ -909,6 +909,17 @@ const queue_vtable = Queue.VTable{
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}).submit,
|
}).submit,
|
||||||
|
.writeBuffer = (struct {
|
||||||
|
pub fn writeBuffer(ptr: *anyopaque, buffer: Buffer, buffer_offset: u64, data: *const anyopaque, size: u64) void {
|
||||||
|
c.wgpuQueueWriteBuffer(
|
||||||
|
@ptrCast(c.WGPUQueue, ptr),
|
||||||
|
@ptrCast(c.WGPUBuffer, buffer.ptr),
|
||||||
|
buffer_offset,
|
||||||
|
data,
|
||||||
|
size,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}).writeBuffer,
|
||||||
};
|
};
|
||||||
|
|
||||||
fn wrapShaderModule(shader_module: c.WGPUShaderModule) ShaderModule {
|
fn wrapShaderModule(shader_module: c.WGPUShaderModule) ShaderModule {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
const CommandBuffer = @import("CommandBuffer.zig");
|
const CommandBuffer = @import("CommandBuffer.zig");
|
||||||
|
const Buffer = @import("Buffer.zig");
|
||||||
|
|
||||||
const Queue = @This();
|
const Queue = @This();
|
||||||
|
|
||||||
|
|
@ -15,8 +16,8 @@ pub const VTable = struct {
|
||||||
// TODO: dawn specific?
|
// TODO: dawn specific?
|
||||||
// copyTextureForBrowser: fn (ptr: *anyopaque, source: *const ImageCopyTexture, destination: *const ImageCopyTexture, copy_size: *const Extent3D, options: *const CopyTextureForBrowserOptions) void,
|
// copyTextureForBrowser: fn (ptr: *anyopaque, source: *const ImageCopyTexture, destination: *const ImageCopyTexture, copy_size: *const Extent3D, options: *const CopyTextureForBrowserOptions) void,
|
||||||
submit: fn (queue: Queue, commands: []const CommandBuffer) void,
|
submit: fn (queue: Queue, commands: []const CommandBuffer) void,
|
||||||
|
writeBuffer: fn (ptr: *anyopaque, buffer: Buffer, buffer_offset: u64, data: *const anyopaque, size: u64) void,
|
||||||
// TODO(implement):
|
// TODO(implement):
|
||||||
// writeBuffer: fn (ptr: *anyopaque, buffer: Buffer, buffer_offset: u64, data: *const anyopaque, size: usize);
|
|
||||||
// writeTexture: fn (ptr: *anyopaque, destination: *const ImageCopyTexture, data: *const anyopaque, data_size: usize, data_layout: *const TextureDataLayout, write_size: *const Extent3D);
|
// writeTexture: fn (ptr: *anyopaque, destination: *const ImageCopyTexture, data: *const anyopaque, data_size: usize, data_layout: *const TextureDataLayout, write_size: *const Extent3D);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -32,6 +33,10 @@ pub inline fn submit(queue: Queue, commands: []const CommandBuffer) void {
|
||||||
queue.vtable.submit(queue, commands);
|
queue.vtable.submit(queue, commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
pub const WorkDoneCallback = struct {
|
pub const WorkDoneCallback = struct {
|
||||||
type_erased_ctx: *anyopaque,
|
type_erased_ctx: *anyopaque,
|
||||||
type_erased_callback: fn (ctx: *anyopaque, status: WorkDoneStatus) callconv(.Inline) void,
|
type_erased_callback: fn (ctx: *anyopaque, status: WorkDoneStatus) callconv(.Inline) void,
|
||||||
|
|
@ -67,6 +72,7 @@ test {
|
||||||
_ = reference;
|
_ = reference;
|
||||||
_ = release;
|
_ = release;
|
||||||
_ = submit;
|
_ = submit;
|
||||||
|
_ = writeBuffer;
|
||||||
_ = WorkDoneCallback;
|
_ = WorkDoneCallback;
|
||||||
_ = WorkDoneStatus;
|
_ = WorkDoneStatus;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue