From ec04880155e55c2f9a3a5db46d8e9a4fa1d1f1f7 Mon Sep 17 00:00:00 2001 From: copper280z Date: Fri, 29 Nov 2024 13:01:24 -0500 Subject: [PATCH 1/2] implement getMapState, getSize, and getUsage methods in wgpu.Buffer. --- src/wgpu.zig | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/wgpu.zig b/src/wgpu.zig index 6597b63..3d32fcb 100644 --- a/src/wgpu.zig +++ b/src/wgpu.zig @@ -1357,6 +1357,21 @@ pub const Buffer = *opaque { } extern fn wgpuBufferGetMappedRange(buffer: Buffer, offset: usize, size: usize) ?*anyopaque; + pub fn getMapState(buffer: Buffer) BufferMapState { + return wgpuBufferGetMapState(buffer); + } + extern fn wgpuBufferGetMapState(buffer: Buffer) BufferMapState; + + pub fn getSize(buffer: Buffer) usize { + return @intCast(wgpuBufferGetSize(buffer)); + } + extern fn wgpuBufferGetSize(buffer: Buffer) u64; + + pub fn getUsage(buffer: Buffer) BufferUsage { + return wgpuBufferGetUsage(buffer); + } + extern fn wgpuBufferGetUsage(buffer: Buffer) BufferUsage; + // `offset` has to be a multiple of 8 (Dawn's validation layer will warn). // `size` has to be a multiple of 4 (Dawn's validation layer will warn). // `size == 0` will map entire range (from 'offset' to the end of the buffer). From d401e84620f5dd28ecf1b6c47c7f9fc227685924 Mon Sep 17 00:00:00 2001 From: copper280z Date: Sat, 30 Nov 2024 10:40:14 -0500 Subject: [PATCH 2/2] update comments with approriate units for func arguments. --- src/wgpu.zig | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/wgpu.zig b/src/wgpu.zig index 3d32fcb..d615e50 100644 --- a/src/wgpu.zig +++ b/src/wgpu.zig @@ -1347,8 +1347,8 @@ pub const Buffer = *opaque { } extern fn wgpuBufferGetConstMappedRange(buffer: Buffer, offset: usize, size: usize) ?*const anyopaque; - // `offset` has to be a multiple of 8 (otherwise `null` will be returned). - // `@sizeOf(T) * len` has to be a multiple of 4 (otherwise `null` will be returned). + // `offset` - in bytes, has to be a multiple of 8 (otherwise `null` will be returned). + // `len` - length of slice to return, in elements of type T, `@sizeOf(T) * len` has to be a multiple of 4 (otherwise `null` will be returned). pub fn getMappedRange(buffer: Buffer, comptime T: type, offset: usize, len: usize) ?[]T { if (len == 0) return null; const ptr = wgpuBufferGetMappedRange(buffer, offset, @sizeOf(T) * len); @@ -1372,9 +1372,8 @@ pub const Buffer = *opaque { } extern fn wgpuBufferGetUsage(buffer: Buffer) BufferUsage; - // `offset` has to be a multiple of 8 (Dawn's validation layer will warn). - // `size` has to be a multiple of 4 (Dawn's validation layer will warn). - // `size == 0` will map entire range (from 'offset' to the end of the buffer). + // `offset` - in bytes, has to be a multiple of 8 (Dawn's validation layer will warn). + // `size` - size of buffer to map in bytes, has to be a multiple of 4 (Dawn's validation layer will warn). pub fn mapAsync( buffer: Buffer, mode: MapMode,