From e218eef6cbbb15c9312d04274f71afabd87ac669 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Mon, 11 Jul 2022 08:47:55 -0700 Subject: [PATCH] gpu: add Buffer.Usage flagset Signed-off-by: Stephen Gutekanst --- gpu/TODO-webgpu.h | 16 ---------------- gpu/src/Buffer.zig | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/gpu/TODO-webgpu.h b/gpu/TODO-webgpu.h index 3f161c2a..48de99df 100644 --- a/gpu/TODO-webgpu.h +++ b/gpu/TODO-webgpu.h @@ -1,21 +1,5 @@ typedef uint32_t WGPUFlags; -typedef enum WGPUBufferUsage { - WGPUBufferUsage_None = 0x00000000, - WGPUBufferUsage_MapRead = 0x00000001, - WGPUBufferUsage_MapWrite = 0x00000002, - WGPUBufferUsage_CopySrc = 0x00000004, - WGPUBufferUsage_CopyDst = 0x00000008, - WGPUBufferUsage_Index = 0x00000010, - WGPUBufferUsage_Vertex = 0x00000020, - WGPUBufferUsage_Uniform = 0x00000040, - WGPUBufferUsage_Storage = 0x00000080, - WGPUBufferUsage_Indirect = 0x00000100, - WGPUBufferUsage_QueryResolve = 0x00000200, - WGPUBufferUsage_Force32 = 0x7FFFFFFF -} WGPUBufferUsage; -typedef WGPUFlags WGPUBufferUsageFlags; - typedef enum WGPUColorWriteMask { WGPUColorWriteMask_None = 0x00000000, WGPUColorWriteMask_Red = 0x00000001, diff --git a/gpu/src/Buffer.zig b/gpu/src/Buffer.zig index 8a182c74..de9386ad 100644 --- a/gpu/src/Buffer.zig +++ b/gpu/src/Buffer.zig @@ -15,3 +15,31 @@ pub const MapAsyncStatus = enum(u32) { 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, + + _pad0: u2 = 0, + _pad1: u8 = 0, + _pad2: u16 = 0, + + comptime { + std.debug.assert( + @sizeOf(@This()) == @sizeOf(u32) and + @bitSizeOf(@This()) == @bitSizeOf(u32), + ); + } + + pub fn equal(a: Usage, b: Usage) bool { + return @bitCast(a, u32) == @bitCast(b, u32); + } +};