gpu: make Buffer.get*MappedRange a friendlier slice API
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
1848ac8ac7
commit
825a07ac2f
4 changed files with 34 additions and 12 deletions
|
|
@ -69,16 +69,38 @@ pub const Buffer = opaque {
|
|||
Impl.bufferDestroy(buffer);
|
||||
}
|
||||
|
||||
/// Default `offset`: 0
|
||||
/// Default `size`: `gpu.whole_map_size`
|
||||
pub inline fn getConstMappedRange(buffer: *Buffer, offset: usize, size: usize) ?*const anyopaque {
|
||||
return Impl.bufferGetConstMappedRange(buffer, offset, size);
|
||||
/// Default `offset_bytes`: 0
|
||||
/// Default `len`: `gpu.whole_map_size` / `std.math.maxint(usize)` (whole range)
|
||||
pub inline fn getConstMappedRange(
|
||||
buffer: *Buffer,
|
||||
comptime T: type,
|
||||
offset_bytes: usize,
|
||||
len: usize,
|
||||
) ?[]const T {
|
||||
const size = @sizeOf(T) * len;
|
||||
const data = Impl.bufferGetConstMappedRange(
|
||||
buffer,
|
||||
offset_bytes,
|
||||
size + size % 4,
|
||||
);
|
||||
return if (data) |d| @ptrCast([*]const T, @alignCast(@alignOf(T), d.ptr))[0..len] else null;
|
||||
}
|
||||
|
||||
/// Default `offset`: 0
|
||||
/// Default `size`: `gpu.whole_map_size`
|
||||
pub inline fn getMappedRange(buffer: *Buffer, offset: usize, size: usize) ?*anyopaque {
|
||||
return Impl.bufferGetMappedRange(buffer, offset, size);
|
||||
/// Default `offset_bytes`: 0
|
||||
/// Default `len`: `gpu.whole_map_size` / `std.math.maxint(usize)` (whole range)
|
||||
pub inline fn getMappedRange(
|
||||
buffer: *Buffer,
|
||||
comptime T: type,
|
||||
offset_bytes: usize,
|
||||
len: usize,
|
||||
) ?[]T {
|
||||
const size = @sizeOf(T) * len;
|
||||
const data = Impl.bufferGetMappedRange(
|
||||
buffer,
|
||||
offset_bytes,
|
||||
size + size % 4,
|
||||
);
|
||||
return if (data) |d| @ptrCast([*]T, @alignCast(@alignOf(T), d.ptr))[0..len] else null;
|
||||
}
|
||||
|
||||
pub inline fn getSize(buffer: *Buffer) u64 {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
const std = @import("std");
|
||||
const ComputePassEncoder = @import("compute_pass_encoder.zig").ComputePassEncoder;
|
||||
const RenderPassEncoder = @import("render_pass_encoder.zig").RenderPassEncoder;
|
||||
const CommandBuffer = @import("command_buffer.zig").CommandBuffer;
|
||||
|
|
@ -91,8 +92,6 @@ pub const CommandEncoder = opaque {
|
|||
command_encoder,
|
||||
buffer,
|
||||
buffer_offset_bytes,
|
||||
data,
|
||||
size,
|
||||
@ptrCast([*]const u8, data_slice.ptr),
|
||||
@intCast(u64, data_slice.len) * @sizeOf(std.meta.Elem(@TypeOf(data_slice))),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
const std = @import("std");
|
||||
const CommandBuffer = @import("command_buffer.zig").CommandBuffer;
|
||||
const Buffer = @import("buffer.zig").Buffer;
|
||||
const Texture = @import("texture.zig").Texture;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue