From d7476bc24ee77207abd7f0c757b8947ff21de9ae Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Wed, 16 Mar 2022 21:09:51 -0700 Subject: [PATCH] gpu: implement RenderBundleEncoder.finish Signed-off-by: Stephen Gutekanst --- gpu/src/NativeInstance.zig | 14 +++++++++----- gpu/src/RenderBundleEncoder.zig | 13 +++++++------ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/gpu/src/NativeInstance.zig b/gpu/src/NativeInstance.zig index 512233e6..af9bff1a 100644 --- a/gpu/src/NativeInstance.zig +++ b/gpu/src/NativeInstance.zig @@ -1164,6 +1164,15 @@ const render_bundle_encoder_vtable = RenderBundleEncoder.VTable{ ); } }).drawIndirect, + .finish = (struct { + pub fn finish(ptr: *anyopaque, descriptor: *const RenderBundle.Descriptor) RenderBundle { + const desc = c.WGPURenderBundleDescriptor{ + .nextInChain = null, + .label = if (descriptor.label) |l| l else null, + }; + return wrapRenderBundle(c.wgpuRenderBundleEncoderFinish(@ptrCast(c.WGPURenderBundleEncoder, ptr), &desc)); + } + }).finish, // .beginOcclusionQuery = (struct { // pub fn beginOcclusionQuery(ptr: *anyopaque, query_index: u32) void { // c.wgpuRenderBundleEncoderBeginOcclusionQuery(@ptrCast(c.WGPURenderBundleEncoder, ptr), query_index); @@ -1174,11 +1183,6 @@ const render_bundle_encoder_vtable = RenderBundleEncoder.VTable{ // c.wgpuRenderBundleEncoderEndOcclusionQuery(@ptrCast(c.WGPURenderBundleEncoder, ptr)); // } // }).endOcclusionQuery, - // .end = (struct { - // pub fn end(ptr: *anyopaque) void { - // c.wgpuRenderBundleEncoderEnd(@ptrCast(c.WGPURenderBundleEncoder, ptr)); - // } - // }).end, // .executeBundles = (struct { // pub fn executeBundles(ptr: *anyopaque, bundles: []RenderBundle) void { // var few_bundles: [16]c.WGPURenderBundle = undefined; diff --git a/gpu/src/RenderBundleEncoder.zig b/gpu/src/RenderBundleEncoder.zig index 3af54fed..a8e5efb3 100644 --- a/gpu/src/RenderBundleEncoder.zig +++ b/gpu/src/RenderBundleEncoder.zig @@ -1,5 +1,6 @@ const Texture = @import("Texture.zig"); const Buffer = @import("Buffer.zig"); +const RenderBundle = @import("RenderBundle.zig"); const RenderBundleEncoder = @This(); @@ -28,8 +29,7 @@ pub const VTable = struct { ) void, drawIndexedIndirect: fn (ptr: *anyopaque, indirect_buffer: Buffer, indirect_offset: u64) void, drawIndirect: fn (ptr: *anyopaque, indirect_buffer: Buffer, indirect_offset: u64) void, - // finish: fn (ptr: *anyopaque, descriptor: *const RenderBundle.Descriptor) void, - // WGPU_EXPORT WGPURenderBundle wgpuRenderBundleEncoderFinish(WGPURenderBundleEncoder renderBundleEncoder, WGPURenderBundleDescriptor const * descriptor); + finish: fn (ptr: *anyopaque, descriptor: *const RenderBundle.Descriptor) RenderBundle, // insertDebugMarker: fn (ptr: *anyopaque, marker_label: [*:0]const u8) void, // WGPU_EXPORT void wgpuRenderBundleEncoderInsertDebugMarker(WGPURenderBundleEncoder renderBundleEncoder, char const * markerLabel); // popDebugGroup: fn (ptr: *anyopaque) void, @@ -84,6 +84,10 @@ pub inline fn drawIndirect(enc: RenderBundleEncoder, indirect_buffer: Buffer, in enc.vtable.drawIndirect(enc.ptr, indirect_buffer, indirect_offset); } +pub inline fn finish(enc: RenderBundleEncoder, descriptor: *const RenderBundle.Descriptor) RenderBundle { + return enc.vtable.finish(enc.ptr, descriptor); +} + // pub inline fn beginOcclusionQuery(enc: RenderBundleEncoder, query_index: u32) void { // enc.vtable.beginOcclusionQuery(enc.ptr, query_index); // } @@ -92,10 +96,6 @@ pub inline fn drawIndirect(enc: RenderBundleEncoder, indirect_buffer: Buffer, in // enc.vtable.endOcclusionQuery(enc.ptr); // } -// pub inline fn end(enc: RenderBundleEncoder) void { -// enc.vtable.end(enc.ptr); -// } - // pub inline fn executeBundles(enc: RenderBundleEncoder, bundles: []RenderBundle) void { // enc.vtable.executeBundles(enc.ptr, bundles); // } @@ -194,5 +194,6 @@ test { _ = drawIndexed; _ = drawIndexedIndirect; _ = drawIndirect; + _ = finish; _ = Descriptor; }