gpu: implement CommandEncoder.writeBuffer
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
9f1775aa7c
commit
1209cb590d
2 changed files with 17 additions and 2 deletions
|
|
@ -31,8 +31,7 @@ pub const VTable = struct {
|
|||
pushDebugGroup: fn (ptr: *anyopaque, group_label: [*:0]const u8) void,
|
||||
resolveQuerySet: fn (ptr: *anyopaque, query_set: QuerySet, first_query: u32, query_count: u32, destination: Buffer, destination_offset: u64) void,
|
||||
setLabel: fn (ptr: *anyopaque, label: [:0]const u8) void,
|
||||
// TODO: typed buffer pointer?
|
||||
// WGPU_EXPORT void wgpuCommandEncoderWriteBuffer(WGPUCommandEncoder commandEncoder, WGPUBuffer buffer, uint64_t bufferOffset, uint8_t const * data, uint64_t size);
|
||||
writeBuffer: fn (ptr: *anyopaque, buffer: Buffer, buffer_offset: u64, data: *const u8, size: u64) void,
|
||||
writeTimestamp: fn (ptr: *anyopaque, query_set: QuerySet, query_index: u32) void,
|
||||
};
|
||||
|
||||
|
|
@ -129,6 +128,10 @@ pub inline fn setLabel(enc: CommandEncoder, label: [:0]const u8) void {
|
|||
enc.vtable.setLabel(enc.ptr, label);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
pub inline fn writeTimestamp(pass: RenderPassEncoder, query_set: QuerySet, query_index: u32) void {
|
||||
pass.vtable.writeTimestamp(pass.ptr, query_set, query_index);
|
||||
}
|
||||
|
|
@ -155,6 +158,7 @@ test {
|
|||
_ = pushDebugGroup;
|
||||
_ = resolveQuerySet;
|
||||
_ = setLabel;
|
||||
_ = writeBuffer;
|
||||
_ = writeTimestamp;
|
||||
_ = Descriptor;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2006,6 +2006,17 @@ const command_encoder_vtable = CommandEncoder.VTable{
|
|||
c.wgpuCommandEncoderPushDebugGroup(@ptrCast(c.WGPUCommandEncoder, ptr), group_label);
|
||||
}
|
||||
}).pushDebugGroup,
|
||||
.writeBuffer = (struct {
|
||||
pub fn writeBuffer(ptr: *anyopaque, buffer: Buffer, buffer_offset: u64, data: *const u8, size: u64) void {
|
||||
c.wgpuCommandEncoderWriteBuffer(
|
||||
@ptrCast(c.WGPUCommandEncoder, ptr),
|
||||
@ptrCast(c.WGPUBuffer, buffer.ptr),
|
||||
buffer_offset,
|
||||
data,
|
||||
size,
|
||||
);
|
||||
}
|
||||
}).writeBuffer,
|
||||
.writeTimestamp = (struct {
|
||||
pub fn writeTimestamp(ptr: *anyopaque, query_set: QuerySet, query_index: u32) void {
|
||||
c.wgpuCommandEncoderWriteTimestamp(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue