gpu: make Buffer an enum with methods

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2022-07-15 00:01:22 -07:00 committed by Stephen Gutekanst
parent 425eb81019
commit 35054ff938
2 changed files with 49 additions and 45 deletions

View file

@ -1,47 +1,51 @@
const std = @import("std");
ptr: *anyopaque,
pub const Buffer = enum(usize) {
_,
pub const BindingType = enum(u32) {
undef = 0x00000000,
uniform = 0x00000001,
storage = 0x00000002,
read_only_storage = 0x00000003,
};
pub const MapAsyncStatus = enum(u32) {
success = 0x00000000,
err = 0x00000001,
unknown = 0x00000002,
device_lost = 0x00000003,
destroyed_before_callback = 0x00000004,
unmapped_before_callback = 0x00000005,
};
pub const Usage = packed struct {
map_read: bool = false,
map_write: bool = false,
copy_src: bool = false,
copy_dst: bool = false,
index: bool = false,
vertex: bool = false,
uniform: bool = false,
storage: bool = false,
indirect: bool = false,
query_resolve: bool = false,
_padding: u22 = 0,
comptime {
std.debug.assert(
@sizeOf(@This()) == @sizeOf(u32) and
@bitSizeOf(@This()) == @bitSizeOf(u32),
);
}
pub const none = Usage{};
pub fn equal(a: Usage, b: Usage) bool {
return @truncate(u10, @bitCast(u32, a)) == @truncate(u10, @bitCast(u32, b));
}
pub const none: Buffer = @intToEnum(Buffer, 0);
pub const BindingType = enum(u32) {
undef = 0x00000000,
uniform = 0x00000001,
storage = 0x00000002,
read_only_storage = 0x00000003,
};
pub const MapAsyncStatus = enum(u32) {
success = 0x00000000,
err = 0x00000001,
unknown = 0x00000002,
device_lost = 0x00000003,
destroyed_before_callback = 0x00000004,
unmapped_before_callback = 0x00000005,
};
pub const Usage = packed struct {
map_read: bool = false,
map_write: bool = false,
copy_src: bool = false,
copy_dst: bool = false,
index: bool = false,
vertex: bool = false,
uniform: bool = false,
storage: bool = false,
indirect: bool = false,
query_resolve: bool = false,
_padding: u22 = 0,
comptime {
std.debug.assert(
@sizeOf(@This()) == @sizeOf(u32) and
@bitSizeOf(@This()) == @bitSizeOf(u32),
);
}
pub const none = Usage{};
pub fn equal(a: Usage, b: Usage) bool {
return @truncate(u10, @bitCast(u32, a)) == @truncate(u10, @bitCast(u32, b));
}
};
};

View file

@ -12,7 +12,7 @@ pub const whole_size = 0xffffffffffffffff;
pub const Adapter = @import("Adapter.zig");
pub const BindGroup = @import("BindGroup.zig");
pub const BindGroupLayout = @import("BindGroupLayout.zig");
pub const Buffer = @import("Buffer.zig");
pub const Buffer = @import("buffer.zig").Buffer;
pub const CommandBuffer = @import("CommandBuffer.zig");
pub const CommandEncoder = @import("CommandEncoder.zig");
pub const ComputePassEncoder = @import("ComputePassEncoder.zig");
@ -40,7 +40,7 @@ test {
refAllDecls(@import("Adapter.zig"));
refAllDecls(@import("BindGroup.zig"));
refAllDecls(@import("BindGroupLayout.zig"));
refAllDecls(@import("Buffer.zig"));
refAllDecls(@import("buffer.zig"));
refAllDecls(@import("CommandBuffer.zig"));
refAllDecls(@import("CommandEncoder.zig"));
refAllDecls(@import("ComputePassEncoder.zig"));