From cad271345a8c2beaf7a78d7d10c7df3bcec32ff8 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Tue, 15 Mar 2022 21:27:23 -0700 Subject: [PATCH] gpu: implement ComputePipeline.getBindGroupLayout Signed-off-by: Stephen Gutekanst --- gpu/src/ComputePipeline.zig | 10 ++++++++-- gpu/src/NativeInstance.zig | 8 ++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/gpu/src/ComputePipeline.zig b/gpu/src/ComputePipeline.zig index b7e9182c..0b7ceec4 100644 --- a/gpu/src/ComputePipeline.zig +++ b/gpu/src/ComputePipeline.zig @@ -1,5 +1,6 @@ const PipelineLayout = @import("PipelineLayout.zig"); const ProgrammableStageDescriptor = @import("structs.zig").ProgrammableStageDescriptor; +const BindGroupLayout = @import("BindGroupLayout.zig"); const ComputePipeline = @This(); @@ -11,9 +12,8 @@ vtable: *const VTable, pub const VTable = struct { reference: fn (ptr: *anyopaque) void, release: fn (ptr: *anyopaque) void, - // TODO: - // WGPU_EXPORT WGPUBindGroupLayout wgpuComputePipelineGetBindGroupLayout(WGPUComputePipeline computePipeline, uint32_t groupIndex); setLabel: fn (ptr: *anyopaque, label: [:0]const u8) void, + getBindGroupLayout: fn (ptr: *anyopaque, group_index: u32) BindGroupLayout, }; pub inline fn reference(pipeline: ComputePipeline) void { @@ -28,6 +28,10 @@ pub inline fn setLabel(pipeline: ComputePipeline, label: [:0]const u8) void { pipeline.vtable.setLabel(pipeline.ptr, label); } +pub inline fn getBindGroupLayout(pipeline: ComputePipeline, group_index: u32) BindGroupLayout { + return pipeline.vtable.getBindGroupLayout(pipeline.ptr, group_index); +} + pub const Descriptor = struct { label: ?[*:0]const u8 = null, layout: PipelineLayout, @@ -88,6 +92,8 @@ test "syntax" { _ = VTable; _ = reference; _ = release; + _ = setLabel; + _ = getBindGroupLayout; _ = Descriptor; _ = CreateStatus; _ = CreateCallback; diff --git a/gpu/src/NativeInstance.zig b/gpu/src/NativeInstance.zig index 9c358786..9ecef2b5 100644 --- a/gpu/src/NativeInstance.zig +++ b/gpu/src/NativeInstance.zig @@ -1312,6 +1312,14 @@ const compute_pipeline_vtable = ComputePipeline.VTable{ c.wgpuComputePipelineSetLabel(@ptrCast(c.WGPUComputePipeline, ptr), label); } }).setLabel, + .getBindGroupLayout = (struct { + pub fn getBindGroupLayout(ptr: *anyopaque, group_index: u32) BindGroupLayout { + return wrapBindGroupLayout(c.wgpuComputePipelineGetBindGroupLayout( + @ptrCast(c.WGPUComputePipeline, ptr), + group_index, + )); + } + }).getBindGroupLayout, }; test "syntax" {