From f2ce208aa1ed1d5a9a512f1e8298f3fe1bacf01d Mon Sep 17 00:00:00 2001 From: Michal Ziulek Date: Mon, 11 Apr 2022 20:47:02 +0200 Subject: [PATCH] gpu: Added helpers to BindGroup.Entry; make dynamic_offset a const slice (#215) Helps hexops/mach# --- gpu/src/BindGroup.zig | 28 ++++++++++++++++++++++++++++ gpu/src/NativeInstance.zig | 6 +++--- gpu/src/RenderPassEncoder.zig | 4 ++-- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/gpu/src/BindGroup.zig b/gpu/src/BindGroup.zig index c0369873..63278fde 100644 --- a/gpu/src/BindGroup.zig +++ b/gpu/src/BindGroup.zig @@ -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 { diff --git a/gpu/src/NativeInstance.zig b/gpu/src/NativeInstance.zig index b314695e..591f201a 100644 --- a/gpu/src/NativeInstance.zig +++ b/gpu/src/NativeInstance.zig @@ -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), diff --git a/gpu/src/RenderPassEncoder.zig b/gpu/src/RenderPassEncoder.zig index aa323ab4..9570082d 100644 --- a/gpu/src/RenderPassEncoder.zig +++ b/gpu/src/RenderPassEncoder.zig @@ -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); }