From d11e912e3689c51911a888826f6497b221dfbf42 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Wed, 16 Mar 2022 21:13:39 -0700 Subject: [PATCH] gpu: implement RenderBundleEncoder.setBindGroup Signed-off-by: Stephen Gutekanst --- gpu/src/NativeInstance.zig | 32 ++++++++++++++++---------------- gpu/src/RenderBundleEncoder.zig | 23 ++++++++++++----------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/gpu/src/NativeInstance.zig b/gpu/src/NativeInstance.zig index 52cb8240..db40bc6b 100644 --- a/gpu/src/NativeInstance.zig +++ b/gpu/src/NativeInstance.zig @@ -1188,6 +1188,22 @@ const render_bundle_encoder_vtable = RenderBundleEncoder.VTable{ c.wgpuRenderBundleEncoderPushDebugGroup(@ptrCast(c.WGPURenderBundleEncoder, ptr), group_label); } }).pushDebugGroup, + .setBindGroup = (struct { + pub fn setBindGroup( + ptr: *anyopaque, + group_index: u32, + group: BindGroup, + dynamic_offsets: []u32, + ) void { + c.wgpuRenderBundleEncoderSetBindGroup( + @ptrCast(c.WGPURenderBundleEncoder, ptr), + group_index, + @ptrCast(c.WGPUBindGroup, group.ptr), + @intCast(u32, dynamic_offsets.len), + &dynamic_offsets[0], + ); + } + }).setBindGroup, // .beginOcclusionQuery = (struct { // pub fn beginOcclusionQuery(ptr: *anyopaque, query_index: u32) void { // c.wgpuRenderBundleEncoderBeginOcclusionQuery(@ptrCast(c.WGPURenderBundleEncoder, ptr), query_index); @@ -1222,22 +1238,6 @@ const render_bundle_encoder_vtable = RenderBundleEncoder.VTable{ // ); // } // }).executeBundles, - // .setBindGroup = (struct { - // pub fn setBindGroup( - // ptr: *anyopaque, - // group_index: u32, - // group: BindGroup, - // dynamic_offsets: []u32, - // ) void { - // c.wgpuRenderBundleEncoderSetBindGroup( - // @ptrCast(c.WGPURenderBundleEncoder, ptr), - // group_index, - // @ptrCast(c.WGPUBindGroup, group.ptr), - // @intCast(u32, dynamic_offsets.len), - // &dynamic_offsets[0], - // ); - // } - // }).setBindGroup, // .setBlendConstant = (struct { // pub fn setBlendConstant(ptr: *anyopaque, color: *const Color) void { // c.wgpuRenderBundleEncoderSetBlendConstant( diff --git a/gpu/src/RenderBundleEncoder.zig b/gpu/src/RenderBundleEncoder.zig index c397b31f..4cc955db 100644 --- a/gpu/src/RenderBundleEncoder.zig +++ b/gpu/src/RenderBundleEncoder.zig @@ -1,6 +1,7 @@ const Texture = @import("Texture.zig"); const Buffer = @import("Buffer.zig"); const RenderBundle = @import("RenderBundle.zig"); +const BindGroup = @import("BindGroup.zig"); const RenderBundleEncoder = @This(); @@ -33,8 +34,7 @@ pub const VTable = struct { insertDebugMarker: fn (ptr: *anyopaque, marker_label: [*:0]const u8) void, popDebugGroup: fn (ptr: *anyopaque) void, pushDebugGroup: fn (ptr: *anyopaque, group_label: [*:0]const u8) void, - // setBindGroup: fn (ptr: *anyopaque, group_index: u32, group: BindGroup, dynamic_offsets: []u32) void, - // WGPU_EXPORT void wgpuRenderBundleEncoderSetBindGroup(WGPURenderBundleEncoder renderBundleEncoder, uint32_t groupIndex, WGPUBindGroup group, uint32_t dynamicOffsetCount, uint32_t const * dynamicOffsets); + setBindGroup: fn (ptr: *anyopaque, group_index: u32, group: BindGroup, dynamic_offsets: []u32) void, // setIndexBuffer: fn (ptr: *anyopaque, buffer: Buffer, format: IndexFormat, offset: u64, size: u64) void, // WGPU_EXPORT void wgpuRenderBundleEncoderSetIndexBuffer(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer buffer, WGPUIndexFormat format, uint64_t offset, uint64_t size); setLabel: fn (ptr: *anyopaque, label: [:0]const u8) void, @@ -97,6 +97,15 @@ pub inline fn pushDebugGroup(enc: RenderBundleEncoder, group_label: [*:0]const u enc.vtable.pushDebugGroup(enc.ptr, group_label); } +pub inline fn setBindGroup( + enc: RenderBundleEncoder, + group_index: u32, + group: BindGroup, + dynamic_offsets: []u32, +) void { + enc.vtable.setBindGroup(enc.ptr, group_index, group, dynamic_offsets); +} + // pub inline fn beginOcclusionQuery(enc: RenderBundleEncoder, query_index: u32) void { // enc.vtable.beginOcclusionQuery(enc.ptr, query_index); // } @@ -109,15 +118,6 @@ pub inline fn pushDebugGroup(enc: RenderBundleEncoder, group_label: [*:0]const u // enc.vtable.executeBundles(enc.ptr, bundles); // } -// pub inline fn setBindGroup( -// enc: RenderBundleEncoder, -// group_index: u32, -// group: BindGroup, -// dynamic_offsets: []u32, -// ) void { -// enc.vtable.setBindGroup(enc.ptr, group_index, group, dynamic_offsets); -// } - // pub inline fn setBlendConstant(enc: RenderBundleEncoder, color: *const Color) void { // enc.vtable.setBlendConstant(enc.ptr, color); // } @@ -195,5 +195,6 @@ test { _ = insertDebugMarker; _ = popDebugGroup; _ = pushDebugGroup; + _ = setBindGroup; _ = Descriptor; }