From 8826cfb7a0380ce0dd8b9e264be60cf9560d1a0e Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Tue, 16 Aug 2022 20:36:12 -0700 Subject: [PATCH] gpu: add type-safety for chaining ExternalTexture.BindingLayout Signed-off-by: Stephen Gutekanst --- gpu/src/bind_group_layout.zig | 8 +++++++- gpu/src/external_texture.zig | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gpu/src/bind_group_layout.zig b/gpu/src/bind_group_layout.zig index 5ad696de..1c8cbd71 100644 --- a/gpu/src/bind_group_layout.zig +++ b/gpu/src/bind_group_layout.zig @@ -6,11 +6,17 @@ const Texture = @import("texture.zig").Texture; const TextureView = @import("texture_view.zig").TextureView; const StorageTextureBindingLayout = @import("types.zig").StorageTextureBindingLayout; const StorageTextureAccess = @import("types.zig").StorageTextureAccess; +const ExternalTexture = @import("external_texture.zig").ExternalTexture; const Impl = @import("interface.zig").Impl; pub const BindGroupLayout = opaque { pub const Entry = extern struct { - next_in_chain: ?*const ChainedStruct = null, + pub const NextInChain = extern union { + generic: ?*const ChainedStruct, + external_texture_binding_layout: *const ExternalTexture.BindingLayout, + }; + + next_in_chain: NextInChain = .{ .generic = null }, binding: u32, visibility: ShaderStageFlags, buffer: Buffer.BindingLayout = .{}, diff --git a/gpu/src/external_texture.zig b/gpu/src/external_texture.zig index fddb5d17..43a1d220 100644 --- a/gpu/src/external_texture.zig +++ b/gpu/src/external_texture.zig @@ -8,7 +8,6 @@ pub const ExternalTexture = opaque { external_texture: *ExternalTexture, }; - /// TODO: Can be chained in gpu.BindGroupLayout.Entry pub const BindingLayout = extern struct { chain: ChainedStruct = .{ .next = null, .s_type = .external_texture_binding_layout }, };