From 34edad6a2cf64981c1efadb13137988326dfddfa Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Sun, 24 Jul 2022 14:57:40 -0700 Subject: [PATCH] gpu: convert Sampler from enum(usize) to *opaque Signed-off-by: Stephen Gutekanst --- gpu/src/bind_group.zig | 2 +- gpu/src/bind_group_layout.zig | 3 +- gpu/src/sampler.zig | 68 +++++++++++++++++------------------ 3 files changed, 35 insertions(+), 38 deletions(-) diff --git a/gpu/src/bind_group.zig b/gpu/src/bind_group.zig index f22f6578..ed2fbe4a 100644 --- a/gpu/src/bind_group.zig +++ b/gpu/src/bind_group.zig @@ -12,7 +12,7 @@ pub const BindGroupEntry = extern struct { buffer: ?Buffer, offset: u64, size: u64, - sampler: Sampler = Sampler.none, // nullable + sampler: ?Sampler, texture_view: TextureView = TextureView.none, // nullable }; diff --git a/gpu/src/bind_group_layout.zig b/gpu/src/bind_group_layout.zig index 817892af..edf89b33 100644 --- a/gpu/src/bind_group_layout.zig +++ b/gpu/src/bind_group_layout.zig @@ -3,6 +3,7 @@ const ShaderStageFlags = @import("types.zig").ShaderStageFlags; const Buffer = @import("buffer.zig").Buffer; const BufferBindingLayout = @import("buffer.zig").BufferBindingLayout; const Sampler = @import("sampler.zig").Sampler; +const SamplerBindingLayout = @import("sampler.zig").SamplerBindingLayout; const Texture = @import("texture.zig").Texture; const StorageTextureBindingLayout = @import("types.zig").StorageTextureBindingLayout; @@ -13,7 +14,7 @@ pub const BindGroupLayoutEntry = extern struct { binding: u32, visibility: ShaderStageFlags, buffer: BufferBindingLayout, - sampler: Sampler.BindingLayout, + sampler: SamplerBindingLayout, texture: Texture.BindingLayout, storage_texture: StorageTextureBindingLayout, }; diff --git a/gpu/src/sampler.zig b/gpu/src/sampler.zig index c1c25885..4012c31a 100644 --- a/gpu/src/sampler.zig +++ b/gpu/src/sampler.zig @@ -2,41 +2,37 @@ const ChainedStruct = @import("types.zig").ChainedStruct; const FilterMode = @import("types.zig").FilterMode; const CompareFunction = @import("types.zig").CompareFunction; -pub const Sampler = enum(usize) { - _, +pub const Sampler = *opaque {}; - pub const none: Sampler = @intToEnum(Sampler, 0); - - pub const AddressMode = enum(u32) { - repeat = 0x00000000, - mirror_repeat = 0x00000001, - clamp_to_edge = 0x00000002, - }; - - pub const BindingType = enum(u32) { - undef = 0x00000000, - filtering = 0x00000001, - non_filtering = 0x00000002, - comparison = 0x00000003, - }; - - pub const BindingLayout = extern struct { - next_in_chain: *const ChainedStruct, - type: BindingType, - }; - - pub const Descriptor = extern struct { - next_in_chain: *const ChainedStruct, - label: ?[*:0]const u8 = null, - address_mode_u: AddressMode, - address_mode_v: AddressMode, - address_mode_w: AddressMode, - mag_filter: FilterMode, - min_filter: FilterMode, - mipmap_filter: FilterMode, - lod_min_clamp: f32, - lod_max_clamp: f32, - compare: CompareFunction, - max_anisotropy: u16, - }; +pub const SamplerAddressMode = enum(u32) { + repeat = 0x00000000, + mirror_repeat = 0x00000001, + clamp_to_edge = 0x00000002, +}; + +pub const SamplerBindingType = enum(u32) { + undef = 0x00000000, + filtering = 0x00000001, + non_filtering = 0x00000002, + comparison = 0x00000003, +}; + +pub const SamplerBindingLayout = extern struct { + next_in_chain: *const ChainedStruct, + type: SamplerBindingType, +}; + +pub const SamplerDescriptor = extern struct { + next_in_chain: *const ChainedStruct, + label: ?[*:0]const u8 = null, + address_mode_u: SamplerAddressMode, + address_mode_v: SamplerAddressMode, + address_mode_w: SamplerAddressMode, + mag_filter: FilterMode, + min_filter: FilterMode, + mipmap_filter: FilterMode, + lod_min_clamp: f32, + lod_max_clamp: f32, + compare: CompareFunction, + max_anisotropy: u16, };