From 061ca10f78f0f1a68f86e007e3abf541964061c0 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Thu, 17 Mar 2022 10:21:43 -0700 Subject: [PATCH] gpu: implement ComputePassEncoder.dispatch Signed-off-by: Stephen Gutekanst --- gpu/src/ComputePassEncoder.zig | 18 ++++++++++++++++-- gpu/src/NativeInstance.zig | 15 +++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/gpu/src/ComputePassEncoder.zig b/gpu/src/ComputePassEncoder.zig index 9f4a9264..f5b401c9 100644 --- a/gpu/src/ComputePassEncoder.zig +++ b/gpu/src/ComputePassEncoder.zig @@ -13,8 +13,7 @@ vtable: *const VTable, pub const VTable = struct { reference: fn (ptr: *anyopaque) void, release: fn (ptr: *anyopaque) void, - // dispatch: fn (ptr: *anyopaque, workgroup_count_x: u32, workgroup_count_y: u32, workgroup_count_z: u32) void, - // WGPU_EXPORT void wgpuComputePassEncoderDispatch(WGPUComputePassEncoder computePassEncoder, uint32_t workgroupCountX, uint32_t workgroupCountY, uint32_t workgroupCountZ); + dispatch: fn (ptr: *anyopaque, workgroup_count_x: u32, workgroup_count_y: u32, workgroup_count_z: u32) void, // dispatchIndirect: fn (ptr: *anyopaque, indirect_buffer: Buffer, indirect_offset: u64) void, // WGPU_EXPORT void wgpuComputePassEncoderDispatchIndirect(WGPUComputePassEncoder computePassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset); end: fn (ptr: *anyopaque) void, @@ -35,6 +34,15 @@ pub inline fn release(enc: ComputePassEncoder) void { enc.vtable.release(enc.ptr); } +pub inline fn dispatch( + enc: ComputePassEncoder, + workgroup_count_x: u32, + workgroup_count_y: u32, + workgroup_count_z: u32, +) void { + enc.vtable.dispatch(enc.ptr, workgroup_count_x, workgroup_count_y, workgroup_count_z); +} + pub inline fn end(enc: ComputePassEncoder) void { enc.vtable.end(enc.ptr); } @@ -81,8 +89,14 @@ test { _ = VTable; _ = reference; _ = release; + _ = dispatch; _ = end; _ = insertDebugMarker; + _ = popDebugGroup; + _ = pushDebugGroup; + _ = setBindGroup; _ = setLabel; + _ = setPipeline; + _ = writeTimestamp; _ = Descriptor; } diff --git a/gpu/src/NativeInstance.zig b/gpu/src/NativeInstance.zig index db4ebcf6..d474d04a 100644 --- a/gpu/src/NativeInstance.zig +++ b/gpu/src/NativeInstance.zig @@ -1610,6 +1610,21 @@ const compute_pass_encoder_vtable = ComputePassEncoder.VTable{ c.wgpuComputePassEncoderRelease(@ptrCast(c.WGPUComputePassEncoder, ptr)); } }).release, + .dispatch = (struct { + pub fn dispatch( + ptr: *anyopaque, + workgroup_count_x: u32, + workgroup_count_y: u32, + workgroup_count_z: u32, + ) void { + c.wgpuComputePassEncoderDispatch( + @ptrCast(c.WGPUComputePassEncoder, ptr), + workgroup_count_x, + workgroup_count_y, + workgroup_count_z, + ); + } + }).dispatch, .end = (struct { pub fn end(ptr: *anyopaque) void { c.wgpuComputePassEncoderEnd(@ptrCast(c.WGPUComputePassEncoder, ptr));