gpu: implement basic Buffer .getConstMappedRange, .getMappedRange
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
1209cb590d
commit
05d1eeb9ee
2 changed files with 24 additions and 4 deletions
|
|
@ -11,10 +11,8 @@ pub const VTable = struct {
|
||||||
reference: fn (ptr: *anyopaque) void,
|
reference: fn (ptr: *anyopaque) void,
|
||||||
release: fn (ptr: *anyopaque) void,
|
release: fn (ptr: *anyopaque) void,
|
||||||
destroy: fn (ptr: *anyopaque) void,
|
destroy: fn (ptr: *anyopaque) void,
|
||||||
// TODO: typed buffer pointer?
|
getConstMappedRange: fn (ptr: *anyopaque, offset: usize, size: usize) []const u8,
|
||||||
// WGPU_EXPORT void const * wgpuBufferGetConstMappedRange(WGPUBuffer buffer, size_t offset, size_t size);
|
getMappedRange: fn (ptr: *anyopaque, offset: usize, size: usize) []u8,
|
||||||
// TODO: typed buffer pointer?
|
|
||||||
// WGPU_EXPORT void * wgpuBufferGetMappedRange(WGPUBuffer buffer, size_t offset, size_t size);
|
|
||||||
setLabel: fn (ptr: *anyopaque, label: [:0]const u8) void,
|
setLabel: fn (ptr: *anyopaque, label: [:0]const u8) void,
|
||||||
mapAsync: fn (
|
mapAsync: fn (
|
||||||
ptr: *anyopaque,
|
ptr: *anyopaque,
|
||||||
|
|
@ -38,6 +36,14 @@ pub inline fn destroy(buf: Buffer) void {
|
||||||
buf.vtable.destroy(buf.ptr);
|
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 getMappedRange(buf: Buffer, offset: usize, size: usize) []u8 {
|
||||||
|
return buf.vtable.getMappedRange(buf.ptr, offset, size);
|
||||||
|
}
|
||||||
|
|
||||||
pub inline fn setLabel(buf: Buffer, label: [:0]const u8) void {
|
pub inline fn setLabel(buf: Buffer, label: [:0]const u8) void {
|
||||||
buf.vtable.setLabel(buf.ptr, label);
|
buf.vtable.setLabel(buf.ptr, label);
|
||||||
}
|
}
|
||||||
|
|
@ -120,6 +126,8 @@ test {
|
||||||
_ = reference;
|
_ = reference;
|
||||||
_ = release;
|
_ = release;
|
||||||
_ = destroy;
|
_ = destroy;
|
||||||
|
_ = getConstMappedRange;
|
||||||
|
_ = getMappedRange;
|
||||||
_ = setLabel;
|
_ = setLabel;
|
||||||
_ = Descriptor;
|
_ = Descriptor;
|
||||||
_ = BindingType;
|
_ = BindingType;
|
||||||
|
|
|
||||||
|
|
@ -1700,6 +1700,18 @@ const buffer_vtable = Buffer.VTable{
|
||||||
c.wgpuBufferRelease(@ptrCast(c.WGPUBuffer, ptr));
|
c.wgpuBufferRelease(@ptrCast(c.WGPUBuffer, ptr));
|
||||||
}
|
}
|
||||||
}).release,
|
}).release,
|
||||||
|
.getConstMappedRange = (struct {
|
||||||
|
pub fn getConstMappedRange(ptr: *anyopaque, offset: usize, size: usize) []const u8 {
|
||||||
|
const range = c.wgpuBufferGetConstMappedRange(@ptrCast(c.WGPUBuffer, ptr), offset, size);
|
||||||
|
return @ptrCast([*c]const u8, range.?)[0..size];
|
||||||
|
}
|
||||||
|
}).getConstMappedRange,
|
||||||
|
.getMappedRange = (struct {
|
||||||
|
pub fn getMappedRange(ptr: *anyopaque, offset: usize, size: usize) []u8 {
|
||||||
|
const range = c.wgpuBufferGetMappedRange(@ptrCast(c.WGPUBuffer, ptr), offset, size);
|
||||||
|
return @ptrCast([*c]u8, range.?)[0..size];
|
||||||
|
}
|
||||||
|
}).getMappedRange,
|
||||||
.setLabel = (struct {
|
.setLabel = (struct {
|
||||||
pub fn setLabel(ptr: *anyopaque, label: [:0]const u8) void {
|
pub fn setLabel(ptr: *anyopaque, label: [:0]const u8) void {
|
||||||
c.wgpuBufferSetLabel(@ptrCast(c.WGPUBuffer, ptr), label);
|
c.wgpuBufferSetLabel(@ptrCast(c.WGPUBuffer, ptr), label);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue