gpu: Added helpers to BindGroup.Entry; make dynamic_offset a const slice (#215)

Helps hexops/mach#
This commit is contained in:
Michal Ziulek 2022-04-11 20:47:02 +02:00 committed by GitHub
parent 8c8534e609
commit f2ce208aa1
Failed to generate hash of commit
3 changed files with 33 additions and 5 deletions

View file

@ -35,6 +35,34 @@ pub const Entry = struct {
size: u64,
sampler: ?Sampler = null,
texture_view: ?TextureView = null,
/// Helper to create a buffer BindGroup.Entry.
pub fn buffer(binding: u32, buf: Buffer, offset: u64, size: u64) Entry {
return .{
.binding = binding,
.buffer = buf,
.offset = offset,
.size = size,
};
}
/// Helper to create a sampler BindGroup.Entry.
pub fn sampler(binding: u32, sam: Sampler) Entry {
return .{
.binding = binding,
.sampler = sam,
.size = 0,
};
}
/// Helper to create a texture view BindGroup.Entry.
pub fn textureView(binding: u32, texview: TextureView) Entry {
return .{
.binding = binding,
.texture_view = texview,
.size = 0,
};
}
};
pub const Descriptor = struct {

View file

@ -1298,7 +1298,7 @@ const render_pass_encoder_vtable = RenderPassEncoder.VTable{
ptr: *anyopaque,
group_index: u32,
group: BindGroup,
dynamic_offsets: []u32,
dynamic_offsets: []const u32,
) void {
c.wgpuRenderPassEncoderSetBindGroup(
@ptrCast(c.WGPURenderPassEncoder, ptr),
@ -1495,7 +1495,7 @@ const render_bundle_encoder_vtable = RenderBundleEncoder.VTable{
ptr: *anyopaque,
group_index: u32,
group: BindGroup,
dynamic_offsets: []u32,
dynamic_offsets: []const u32,
) void {
c.wgpuRenderBundleEncoderSetBindGroup(
@ptrCast(c.WGPURenderBundleEncoder, ptr),
@ -2157,7 +2157,7 @@ const compute_pass_encoder_vtable = ComputePassEncoder.VTable{
ptr: *anyopaque,
group_index: u32,
group: BindGroup,
dynamic_offsets: []u32,
dynamic_offsets: []const u32,
) void {
c.wgpuComputePassEncoderSetBindGroup(
@ptrCast(c.WGPUComputePassEncoder, ptr),

View file

@ -37,7 +37,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,
setBindGroup: fn (ptr: *anyopaque, group_index: u32, group: BindGroup, dynamic_offsets: []const u32) void,
setBlendConstant: fn (ptr: *anyopaque, color: *const Color) void,
setIndexBuffer: fn (ptr: *anyopaque, buffer: Buffer, format: IndexFormat, offset: u64, size: u64) void,
setLabel: fn (ptr: *anyopaque, label: [:0]const u8) void,
@ -118,7 +118,7 @@ pub inline fn setBindGroup(
pass: RenderPassEncoder,
group_index: u32,
group: BindGroup,
dynamic_offsets: []u32,
dynamic_offsets: []const u32,
) void {
pass.vtable.setBindGroup(pass.ptr, group_index, group, dynamic_offsets);
}