From 7e54d9b4ae0aa801a1e5afb04674221fa833bf03 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Tue, 15 Mar 2022 21:21:33 -0700 Subject: [PATCH] gpu: implement RenderPipeline.getBindGroupLayout Signed-off-by: Stephen Gutekanst --- gpu/src/NativeInstance.zig | 8 ++++++++ gpu/src/RenderPipeline.zig | 10 ++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/gpu/src/NativeInstance.zig b/gpu/src/NativeInstance.zig index df81751b..9c358786 100644 --- a/gpu/src/NativeInstance.zig +++ b/gpu/src/NativeInstance.zig @@ -855,6 +855,14 @@ const render_pipeline_vtable = RenderPipeline.VTable{ c.wgpuRenderPipelineSetLabel(@ptrCast(c.WGPURenderPipeline, ptr), label); } }).setLabel, + .getBindGroupLayout = (struct { + pub fn getBindGroupLayout(ptr: *anyopaque, group_index: u32) BindGroupLayout { + return wrapBindGroupLayout(c.wgpuRenderPipelineGetBindGroupLayout( + @ptrCast(c.WGPURenderPipeline, ptr), + group_index, + )); + } + }).getBindGroupLayout, }; fn wrapRenderPassEncoder(pass: c.WGPURenderPassEncoder) RenderPassEncoder { diff --git a/gpu/src/RenderPipeline.zig b/gpu/src/RenderPipeline.zig index 9b7297ea..facac1c9 100644 --- a/gpu/src/RenderPipeline.zig +++ b/gpu/src/RenderPipeline.zig @@ -4,6 +4,7 @@ const PrimitiveState = @import("structs.zig").PrimitiveState; const DepthStencilState = @import("structs.zig").DepthStencilState; const MultisampleState = @import("structs.zig").MultisampleState; const FragmentState = @import("structs.zig").FragmentState; +const BindGroupLayout = @import("BindGroupLayout.zig"); const RenderPipeline = @This(); @@ -15,9 +16,8 @@ vtable: *const VTable, pub const VTable = struct { reference: fn (ptr: *anyopaque) void, release: fn (ptr: *anyopaque) void, - // TODO: - // WGPU_EXPORT WGPUBindGroupLayout wgpuRenderPipelineGetBindGroupLayout(WGPURenderPipeline renderPipeline, 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: RenderPipeline) void { @@ -32,6 +32,10 @@ pub inline fn setLabel(pipeline: RenderPipeline, label: [:0]const u8) void { pipeline.vtable.setLabel(pipeline.ptr, label); } +pub inline fn getBindGroupLayout(pipeline: RenderPipeline, group_index: u32) BindGroupLayout { + return pipeline.vtable.getBindGroupLayout(pipeline.ptr, group_index); +} + pub const Descriptor = struct { label: ?[*:0]const u8 = null, layout: ?PipelineLayout, @@ -96,6 +100,8 @@ test "syntax" { _ = VTable; _ = reference; _ = release; + _ = setLabel; + _ = getBindGroupLayout; _ = Descriptor; _ = CreateStatus; _ = CreateCallback;