gpu: make Texture an enum with methods

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2022-07-15 00:25:36 -07:00 committed by Stephen Gutekanst
parent 2a65690ffc
commit 05f153009d
2 changed files with 158 additions and 154 deletions

View file

@ -1,156 +1,160 @@
const std = @import("std"); const std = @import("std");
ptr: *anyopaque, pub const Texture = enum(usize) {
_,
pub const Aspect = enum(u32) { pub const none: Texture = @intToEnum(Texture, 0);
all = 0x00000000,
stencil_only = 0x00000001, pub const Aspect = enum(u32) {
depth_only = 0x00000002, all = 0x00000000,
plane0_only = 0x00000003, stencil_only = 0x00000001,
plane1_only = 0x00000004, depth_only = 0x00000002,
}; plane0_only = 0x00000003,
plane1_only = 0x00000004,
pub const ComponentType = enum(u32) { };
float = 0x00000000,
sint = 0x00000001, pub const ComponentType = enum(u32) {
uint = 0x00000002, float = 0x00000000,
depth_comparison = 0x00000003, sint = 0x00000001,
}; uint = 0x00000002,
depth_comparison = 0x00000003,
pub const Dimension = enum(u32) { };
dimension_1d = 0x00000000,
dimension_2d = 0x00000001, pub const Dimension = enum(u32) {
dimension_3d = 0x00000002, dimension_1d = 0x00000000,
}; dimension_2d = 0x00000001,
dimension_3d = 0x00000002,
pub const Format = enum(u32) { };
undef = 0x00000000,
r8_unorm = 0x00000001, pub const Format = enum(u32) {
r8_snorm = 0x00000002, undef = 0x00000000,
r8_uint = 0x00000003, r8_unorm = 0x00000001,
r8_sint = 0x00000004, r8_snorm = 0x00000002,
r16_uint = 0x00000005, r8_uint = 0x00000003,
r16_sint = 0x00000006, r8_sint = 0x00000004,
r16_float = 0x00000007, r16_uint = 0x00000005,
rg8_unorm = 0x00000008, r16_sint = 0x00000006,
rg8_snorm = 0x00000009, r16_float = 0x00000007,
rg8_uint = 0x0000000a, rg8_unorm = 0x00000008,
rg8_sint = 0x0000000b, rg8_snorm = 0x00000009,
r32_float = 0x0000000c, rg8_uint = 0x0000000a,
r32_uint = 0x0000000d, rg8_sint = 0x0000000b,
r32_sint = 0x0000000e, r32_float = 0x0000000c,
rg16_uint = 0x0000000f, r32_uint = 0x0000000d,
rg16_sint = 0x00000010, r32_sint = 0x0000000e,
rg16_float = 0x00000011, rg16_uint = 0x0000000f,
rgba8_unorm = 0x00000012, rg16_sint = 0x00000010,
rgba8_unorm_srgb = 0x00000013, rg16_float = 0x00000011,
rgba8_snorm = 0x00000014, rgba8_unorm = 0x00000012,
rgba8_uint = 0x00000015, rgba8_unorm_srgb = 0x00000013,
rgba8_sint = 0x00000016, rgba8_snorm = 0x00000014,
bgra8_unorm = 0x00000017, rgba8_uint = 0x00000015,
bgra8_unorm_srgb = 0x00000018, rgba8_sint = 0x00000016,
rgb10_a2_unorm = 0x00000019, bgra8_unorm = 0x00000017,
rg11_b10_ufloat = 0x0000001a, bgra8_unorm_srgb = 0x00000018,
rgb9_e5_ufloat = 0x0000001b, rgb10_a2_unorm = 0x00000019,
rg32_float = 0x0000001c, rg11_b10_ufloat = 0x0000001a,
rg32_uint = 0x0000001d, rgb9_e5_ufloat = 0x0000001b,
rg32_sint = 0x0000001e, rg32_float = 0x0000001c,
rgba16_uint = 0x0000001f, rg32_uint = 0x0000001d,
rgba16_sint = 0x00000020, rg32_sint = 0x0000001e,
rgba16_float = 0x00000021, rgba16_uint = 0x0000001f,
rgba32_float = 0x00000022, rgba16_sint = 0x00000020,
rgba32_uint = 0x00000023, rgba16_float = 0x00000021,
rgba32_sint = 0x00000024, rgba32_float = 0x00000022,
stencil8 = 0x00000025, rgba32_uint = 0x00000023,
depth16_unorm = 0x00000026, rgba32_sint = 0x00000024,
depth24_plus = 0x00000027, stencil8 = 0x00000025,
depth24_plus_stencil8 = 0x00000028, depth16_unorm = 0x00000026,
depth32_float = 0x00000029, depth24_plus = 0x00000027,
depth32_float_stencil8 = 0x0000002a, depth24_plus_stencil8 = 0x00000028,
bc1_rgba_unorm = 0x0000002b, depth32_float = 0x00000029,
bc1_rgba_unorm_srgb = 0x0000002c, depth32_float_stencil8 = 0x0000002a,
bc2_rgba_unorm = 0x0000002d, bc1_rgba_unorm = 0x0000002b,
bc2_rgba_unorm_srgb = 0x0000002e, bc1_rgba_unorm_srgb = 0x0000002c,
bc3_rgba_unorm = 0x0000002f, bc2_rgba_unorm = 0x0000002d,
bc3_rgba_unorm_srgb = 0x00000030, bc2_rgba_unorm_srgb = 0x0000002e,
bc4_runorm = 0x00000031, bc3_rgba_unorm = 0x0000002f,
bc4_rsnorm = 0x00000032, bc3_rgba_unorm_srgb = 0x00000030,
bc5_rg_unorm = 0x00000033, bc4_runorm = 0x00000031,
bc5_rg_snorm = 0x00000034, bc4_rsnorm = 0x00000032,
bc6_hrgb_ufloat = 0x00000035, bc5_rg_unorm = 0x00000033,
bc6_hrgb_float = 0x00000036, bc5_rg_snorm = 0x00000034,
bc7_rgba_unorm = 0x00000037, bc6_hrgb_ufloat = 0x00000035,
bc7_rgba_unorm_srgb = 0x00000038, bc6_hrgb_float = 0x00000036,
etc2_rgb8_unorm = 0x00000039, bc7_rgba_unorm = 0x00000037,
etc2_rgb8_unorm_srgb = 0x0000003a, bc7_rgba_unorm_srgb = 0x00000038,
etc2_rgb8_a1_unorm = 0x0000003b, etc2_rgb8_unorm = 0x00000039,
etc2_rgb8_a1_unorm_srgb = 0x0000003c, etc2_rgb8_unorm_srgb = 0x0000003a,
etc2_rgba8_unorm = 0x0000003d, etc2_rgb8_a1_unorm = 0x0000003b,
etc2_rgba8_unorm_srgb = 0x0000003e, etc2_rgb8_a1_unorm_srgb = 0x0000003c,
eacr11_unorm = 0x0000003f, etc2_rgba8_unorm = 0x0000003d,
eacr11_snorm = 0x00000040, etc2_rgba8_unorm_srgb = 0x0000003e,
eacrg11_unorm = 0x00000041, eacr11_unorm = 0x0000003f,
eacrg11_snorm = 0x00000042, eacr11_snorm = 0x00000040,
astc4x4_unorm = 0x00000043, eacrg11_unorm = 0x00000041,
astc4x4_unorm_srgb = 0x00000044, eacrg11_snorm = 0x00000042,
astc5x4_unorm = 0x00000045, astc4x4_unorm = 0x00000043,
astc5x4_unorm_srgb = 0x00000046, astc4x4_unorm_srgb = 0x00000044,
astc5x5_unorm = 0x00000047, astc5x4_unorm = 0x00000045,
astc5x5_unorm_srgb = 0x00000048, astc5x4_unorm_srgb = 0x00000046,
astc6x5_unorm = 0x00000049, astc5x5_unorm = 0x00000047,
astc6x5_unorm_srgb = 0x0000004a, astc5x5_unorm_srgb = 0x00000048,
astc6x6_unorm = 0x0000004b, astc6x5_unorm = 0x00000049,
astc6x6_unorm_srgb = 0x0000004c, astc6x5_unorm_srgb = 0x0000004a,
astc8x5_unorm = 0x0000004d, astc6x6_unorm = 0x0000004b,
astc8x5_unorm_srgb = 0x0000004e, astc6x6_unorm_srgb = 0x0000004c,
astc8x6_unorm = 0x0000004f, astc8x5_unorm = 0x0000004d,
astc8x6_unorm_srgb = 0x00000050, astc8x5_unorm_srgb = 0x0000004e,
astc8x8_unorm = 0x00000051, astc8x6_unorm = 0x0000004f,
astc8x8_unorm_srgb = 0x00000052, astc8x6_unorm_srgb = 0x00000050,
astc10x5_unorm = 0x00000053, astc8x8_unorm = 0x00000051,
astc10x5_unorm_srgb = 0x00000054, astc8x8_unorm_srgb = 0x00000052,
astc10x6_unorm = 0x00000055, astc10x5_unorm = 0x00000053,
astc10x6_unorm_srgb = 0x00000056, astc10x5_unorm_srgb = 0x00000054,
astc10x8_unorm = 0x00000057, astc10x6_unorm = 0x00000055,
astc10x8_unorm_srgb = 0x00000058, astc10x6_unorm_srgb = 0x00000056,
astc10x10_unorm = 0x00000059, astc10x8_unorm = 0x00000057,
astc10x10_unorm_srgb = 0x0000005a, astc10x8_unorm_srgb = 0x00000058,
astc12x10_unorm = 0x0000005b, astc10x10_unorm = 0x00000059,
astc12x10_unorm_srgb = 0x0000005c, astc10x10_unorm_srgb = 0x0000005a,
astc12x12_unorm = 0x0000005d, astc12x10_unorm = 0x0000005b,
astc12x12_unorm_srgb = 0x0000005e, astc12x10_unorm_srgb = 0x0000005c,
r8_bg8_biplanar420_unorm = 0x0000005f, astc12x12_unorm = 0x0000005d,
}; astc12x12_unorm_srgb = 0x0000005e,
r8_bg8_biplanar420_unorm = 0x0000005f,
pub const SampleType = enum(u32) { };
undef = 0x00000000,
float = 0x00000001, pub const SampleType = enum(u32) {
unfilterable_float = 0x00000002, undef = 0x00000000,
depth = 0x00000003, float = 0x00000001,
sint = 0x00000004, unfilterable_float = 0x00000002,
uint = 0x00000005, depth = 0x00000003,
}; sint = 0x00000004,
uint = 0x00000005,
pub const Usage = packed struct { };
copy_src: bool = false,
copy_dst: bool = false, pub const Usage = packed struct {
texture_binding: bool = false, copy_src: bool = false,
storage_binding: bool = false, copy_dst: bool = false,
render_attachment: bool = false, texture_binding: bool = false,
present: bool = false, storage_binding: bool = false,
render_attachment: bool = false,
_padding: u26 = 0, present: bool = false,
comptime { _padding: u26 = 0,
std.debug.assert(
@sizeOf(@This()) == @sizeOf(u32) and comptime {
@bitSizeOf(@This()) == @bitSizeOf(u32), std.debug.assert(
); @sizeOf(@This()) == @sizeOf(u32) and
} @bitSizeOf(@This()) == @bitSizeOf(u32),
);
pub const none = Usage{}; }
pub fn equal(a: Usage, b: Usage) bool { pub const none = Usage{};
return @truncate(u6, @bitCast(u32, a)) == @truncate(u6, @bitCast(u32, b));
} pub fn equal(a: Usage, b: Usage) bool {
return @truncate(u6, @bitCast(u32, a)) == @truncate(u6, @bitCast(u32, b));
}
};
}; };

View file

@ -31,7 +31,7 @@ pub const Sampler = @import("sampler.zig").Sampler;
pub const ShaderModule = @import("shader_module.zig").ShaderModule; pub const ShaderModule = @import("shader_module.zig").ShaderModule;
pub const Surface = @import("surface.zig").Surface; pub const Surface = @import("surface.zig").Surface;
pub const SwapChain = @import("swap_chain.zig").SwapChain; pub const SwapChain = @import("swap_chain.zig").SwapChain;
pub const Texture = @import("Texture.zig"); pub const Texture = @import("texture.zig").Texture;
pub const TextureView = @import("TextureView.zig"); pub const TextureView = @import("TextureView.zig");
pub const AlphaMode = @import("types.zig").AlphaMode; pub const AlphaMode = @import("types.zig").AlphaMode;
@ -59,7 +59,7 @@ test {
refAllDecls(@import("shader_module.zig")); refAllDecls(@import("shader_module.zig"));
refAllDecls(@import("surface.zig")); refAllDecls(@import("surface.zig"));
refAllDecls(@import("swap_chain.zig")); refAllDecls(@import("swap_chain.zig"));
refAllDecls(@import("Texture.zig")); refAllDecls(@import("texture.zig"));
refAllDecls(@import("TextureView.zig")); refAllDecls(@import("TextureView.zig"));
refAllDecls(@import("types.zig")); refAllDecls(@import("types.zig"));
} }