gpu: implement RenderBundleEncoder.setBindGroup

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2022-03-16 21:13:39 -07:00 committed by Stephen Gutekanst
parent 2c44f5c45e
commit d11e912e36
2 changed files with 28 additions and 27 deletions

View file

@ -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(

View file

@ -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;
}