diff --git a/gpu/src/bind_group.zig b/gpu/src/bind_group.zig index ed2fbe4a..b9fd07b3 100644 --- a/gpu/src/bind_group.zig +++ b/gpu/src/bind_group.zig @@ -13,7 +13,7 @@ pub const BindGroupEntry = extern struct { offset: u64, size: u64, sampler: ?Sampler, - texture_view: TextureView = TextureView.none, // nullable + texture_view: ?TextureView, }; pub const BindGroupDescriptor = extern struct { diff --git a/gpu/src/external_texture.zig b/gpu/src/external_texture.zig index f2ccd25c..8b8e6bf0 100644 --- a/gpu/src/external_texture.zig +++ b/gpu/src/external_texture.zig @@ -16,7 +16,7 @@ pub const ExternalTextureDescriptor = extern struct { next_in_chain: *const ChainedStruct, label: ?[*:0]const u8 = null, plane0: TextureView, - plane1: TextureView = TextureView.none, // nullable + plane1: ?TextureView, do_yuv_to_rgb_conversion_only: bool, yuv_to_rgb_conversion_matrix: ?[*]const f32 = null, // nullable src_transform_function_parameters: [*]const f32, diff --git a/gpu/src/texture.zig b/gpu/src/texture.zig index 7634250f..27dcbb4e 100644 --- a/gpu/src/texture.zig +++ b/gpu/src/texture.zig @@ -1,6 +1,7 @@ const std = @import("std"); const ChainedStruct = @import("types.zig").ChainedStruct; const TextureView = @import("texture_view.zig").TextureView; +const TextureViewDimension = @import("texture_view.zig").TextureViewDimension; const Extent3D = @import("types.zig").Extent3D; pub const Texture = enum(usize) { @@ -165,7 +166,7 @@ pub const Texture = enum(usize) { pub const BindingLayout = extern struct { next_in_chain: *const ChainedStruct, sample_type: SampleType, - view_dimension: TextureView.Dimension, + view_dimension: TextureViewDimension, multisampled: bool, }; diff --git a/gpu/src/texture_view.zig b/gpu/src/texture_view.zig index 673d7f9e..91a0fa5c 100644 --- a/gpu/src/texture_view.zig +++ b/gpu/src/texture_view.zig @@ -1,30 +1,26 @@ const ChainedStruct = @import("types.zig").ChainedStruct; const Texture = @import("texture.zig").Texture; -pub const TextureView = enum(usize) { - _, +pub const TextureView = *opaque {}; - pub const none: TextureView = @intToEnum(TextureView, 0); - - pub const Dimension = enum(u32) { - dimension_undef = 0x00000000, - dimension_1d = 0x00000001, - dimension_2d = 0x00000002, - dimension_2d_array = 0x00000003, - dimension_cube = 0x00000004, - dimension_cube_array = 0x00000005, - dimension_3d = 0x00000006, - }; - - pub const Descriptor = extern struct { - next_in_chain: *const ChainedStruct, - label: ?[*:0]const u8 = null, - format: Texture.Format, - dimension: Dimension, - base_mip_level: u32, - mip_level_count: u32, - base_array_layer: u32, - array_layer_count: u32, - aspect: Texture.Aspect, - }; +pub const TextureViewDimension = enum(u32) { + dimension_undef = 0x00000000, + dimension_1d = 0x00000001, + dimension_2d = 0x00000002, + dimension_2d_array = 0x00000003, + dimension_cube = 0x00000004, + dimension_cube_array = 0x00000005, + dimension_3d = 0x00000006, +}; + +pub const TextureViewDescriptor = extern struct { + next_in_chain: *const ChainedStruct, + label: ?[*:0]const u8 = null, + format: Texture.Format, + dimension: TextureViewDimension, + base_mip_level: u32, + mip_level_count: u32, + base_array_layer: u32, + array_layer_count: u32, + aspect: Texture.Aspect, }; diff --git a/gpu/src/types.zig b/gpu/src/types.zig index df6e3fc5..98590ce6 100644 --- a/gpu/src/types.zig +++ b/gpu/src/types.zig @@ -2,6 +2,7 @@ const std = @import("std"); const testing = std.testing; const Texture = @import("texture.zig").Texture; const TextureView = @import("texture_view.zig").TextureView; +const TextureViewDimension = @import("texture_view.zig").TextureViewDimension; const Buffer = @import("buffer.zig").Buffer; const ShaderModule = @import("shader_module.zig").ShaderModule; @@ -502,7 +503,7 @@ pub const StorageTextureBindingLayout = extern struct { next_in_chain: *const ChainedStruct, access: StorageTextureAccess, format: Texture.Format, - view_dimension: TextureView.Dimension, + view_dimension: TextureViewDimension, }; pub const VertexAttribute = extern struct { @@ -559,8 +560,8 @@ pub const ProgrammableStageDescriptor = extern struct { }; pub const RenderPassColorAttachment = extern struct { - view: TextureView = TextureView.none, // nullable - resolve_target: TextureView = TextureView.none, // nullable + view: ?TextureView, + resolve_target: ?TextureView, load_op: LoadOp, store_op: StoreOp, clear_color: Color,