From f79c77af99b9a6df9ff6c3d57cf28a6a002fd715 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Fri, 18 Mar 2022 22:47:50 -0700 Subject: [PATCH] gpu: make Buffer mapped ranges generic / typed Signed-off-by: Stephen Gutekanst --- gpu/src/Buffer.zig | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gpu/src/Buffer.zig b/gpu/src/Buffer.zig index bc8f253a..8aeeb009 100644 --- a/gpu/src/Buffer.zig +++ b/gpu/src/Buffer.zig @@ -36,12 +36,14 @@ pub inline fn destroy(buf: Buffer) void { buf.vtable.destroy(buf.ptr); } -pub inline fn getConstMappedRange(buf: Buffer, offset: usize, size: usize) []const u8 { - return buf.vtable.getConstMappedRange(buf.ptr, offset, size); +pub inline fn getConstMappedRange(buf: Buffer, comptime T: type, offset: usize, len: usize) []const T { + const data = buf.vtable.getConstMappedRange(buf.ptr, offset, @sizeOf(T) * len); + return @ptrCast(*const T, &data[0])[0..len]; } -pub inline fn getMappedRange(buf: Buffer, offset: usize, size: usize) []u8 { - return buf.vtable.getMappedRange(buf.ptr, offset, size); +pub inline fn getMappedRange(buf: Buffer, comptime T: type, offset: usize, len: usize) []T { + const data = buf.vtable.getMappedRange(buf.ptr, offset, @sizeOf(T) * len); + return @ptrCast(*T, &data[0])[0..len]; } pub inline fn setLabel(buf: Buffer, label: [:0]const u8) void {