gpu: implement ComputePassEncoder .setPipeline, .writeTimestamp

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2022-03-17 10:05:18 -07:00 committed by Stephen Gutekanst
parent 7525f088c3
commit 387c10e175
2 changed files with 26 additions and 4 deletions

View file

@ -1,4 +1,6 @@
const ComputePassTimestampWrite = @import("structs.zig").ComputePassTimestampWrite;
const ComputePipeline = @import("ComputePipeline.zig");
const QuerySet = @import("QuerySet.zig");
const ComputePassEncoder = @This();
@ -21,10 +23,8 @@ pub const VTable = struct {
// setBindGroup: fn (ptr: *anyopaque, group_index: u32, group: BindGroup, dynamic_offsets: []u32) void,
// WGPU_EXPORT void wgpuComputePassEncoderSetBindGroup(WGPUComputePassEncoder computePassEncoder, uint32_t groupIndex, WGPUBindGroup group, uint32_t dynamicOffsetCount, uint32_t const * dynamicOffsets);
setLabel: fn (ptr: *anyopaque, label: [:0]const u8) void,
// setPipeline: fn (ptr: *anyopaque, pipeline: ComputePipeline) void,
// WGPU_EXPORT void wgpuComputePassEncoderSetPipeline(WGPUComputePassEncoder computePassEncoder, WGPUComputePipeline pipeline);
// writeTimestamp: fn (ptr: *anyopaque, query_set: QuerySet, query_index: u32) void,
// WGPU_EXPORT void wgpuComputePassEncoderWriteTimestamp(WGPUComputePassEncoder computePassEncoder, WGPUQuerySet querySet, uint32_t queryIndex);
setPipeline: fn (ptr: *anyopaque, pipeline: ComputePipeline) void,
writeTimestamp: fn (ptr: *anyopaque, query_set: QuerySet, query_index: u32) void,
};
pub inline fn reference(enc: ComputePassEncoder) void {
@ -55,6 +55,14 @@ pub inline fn setLabel(enc: ComputePassEncoder, label: [:0]const u8) void {
enc.vtable.setLabel(enc.ptr, label);
}
pub inline fn setPipeline(enc: ComputePassEncoder, pipeline: ComputePipeline) void {
enc.vtable.setPipeline(enc.ptr, pipeline);
}
pub inline fn writeTimestamp(enc: ComputePassEncoder, query_set: QuerySet, query_index: u32) void {
enc.vtable.writeTimestamp(enc.ptr, query_set, query_index);
}
pub const Descriptor = struct {
label: ?[*:0]const u8 = null,
timestamp_writes: []const ComputePassTimestampWrite,

View file

@ -1635,6 +1635,20 @@ const compute_pass_encoder_vtable = ComputePassEncoder.VTable{
c.wgpuComputePassEncoderPushDebugGroup(@ptrCast(c.WGPUComputePassEncoder, ptr), group_label);
}
}).pushDebugGroup,
.setPipeline = (struct {
pub fn setPipeline(ptr: *anyopaque, pipeline: ComputePipeline) void {
c.wgpuComputePassEncoderSetPipeline(@ptrCast(c.WGPUComputePassEncoder, ptr), @ptrCast(c.WGPUComputePipeline, pipeline.ptr));
}
}).setPipeline,
.writeTimestamp = (struct {
pub fn writeTimestamp(ptr: *anyopaque, query_set: QuerySet, query_index: u32) void {
c.wgpuComputePassEncoderWriteTimestamp(
@ptrCast(c.WGPUComputePassEncoder, ptr),
@ptrCast(c.WGPUQuerySet, query_set.ptr),
query_index,
);
}
}).writeTimestamp,
};
fn wrapComputePipeline(pipeline: c.WGPUComputePipeline) ComputePipeline {