gpu: Queue: OnSubmittedWorkDone -> WorkDoneCallback, consistent w/other callbacks
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
356e4102cd
commit
3ffc1ca5d8
2 changed files with 21 additions and 15 deletions
|
|
@ -516,10 +516,10 @@ const queue_vtable = Queue.VTable{
|
||||||
|
|
||||||
const callback = (struct {
|
const callback = (struct {
|
||||||
pub fn callback(status: c.WGPUQueueWorkDoneStatus, userdata: ?*anyopaque) callconv(.C) void {
|
pub fn callback(status: c.WGPUQueueWorkDoneStatus, userdata: ?*anyopaque) callconv(.C) void {
|
||||||
const _on_submitted_work_done = @ptrCast(*Queue.OnSubmittedWorkDone, @alignCast(@alignOf(*Queue.OnSubmittedWorkDone), userdata));
|
const callback_info = @ptrCast(*Queue.WorkDoneCallback, @alignCast(@alignOf(*Queue.WorkDoneCallback), userdata));
|
||||||
_on_submitted_work_done.callback(
|
callback_info.type_erased_callback(
|
||||||
|
callback_info.type_erased_ctx,
|
||||||
@intToEnum(Queue.WorkDoneStatus, status),
|
@intToEnum(Queue.WorkDoneStatus, status),
|
||||||
_on_submitted_work_done.userdata,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}).callback;
|
}).callback;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ const CommandBuffer = @import("CommandBuffer.zig");
|
||||||
|
|
||||||
const Queue = @This();
|
const Queue = @This();
|
||||||
|
|
||||||
on_submitted_work_done: ?OnSubmittedWorkDone = null,
|
on_submitted_work_done: ?WorkDoneCallback = null,
|
||||||
|
|
||||||
/// The type erased pointer to the Queue implementation
|
/// The type erased pointer to the Queue implementation
|
||||||
/// Equal to c.WGPUQueue for NativeInstance.
|
/// Equal to c.WGPUQueue for NativeInstance.
|
||||||
|
|
@ -32,18 +32,24 @@ pub inline fn submit(queue: Queue, commands: []const CommandBuffer) void {
|
||||||
queue.vtable.submit(queue, commands);
|
queue.vtable.submit(queue, commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const OnSubmittedWorkDone = struct {
|
pub const WorkDoneCallback = struct {
|
||||||
userdata: *anyopaque,
|
type_erased_ctx: *anyopaque,
|
||||||
callback: fn (status: WorkDoneStatus, userdata: *anyopaque) void,
|
type_erased_callback: fn (ctx: *anyopaque, status: WorkDoneStatus) callconv(.Inline) void,
|
||||||
|
|
||||||
fn init(comptime Context: type, userdata: *Context, comptime callback: fn (status: WorkDoneStatus, userdata: *Context) void) OnSubmittedWorkDone {
|
pub fn init(
|
||||||
return .{
|
comptime Context: type,
|
||||||
.userdata = userdata,
|
ctx: *Context,
|
||||||
.callback = (struct {
|
comptime callback: fn (ctx: *Context, status: WorkDoneStatus) void,
|
||||||
pub inline fn untyped(status: WorkDoneStatus, _userdata: *anyopaque) void {
|
) WorkDoneCallback {
|
||||||
callback(status, @ptrCast(*Context, @alignCast(@alignOf(*Context), _userdata)));
|
const erased = (struct {
|
||||||
|
pub inline fn erased(type_erased_ctx: *anyopaque, status: WorkDoneStatus) void {
|
||||||
|
callback(@ptrCast(*Context, @alignCast(@alignOf(*Context), type_erased_ctx)), status);
|
||||||
}
|
}
|
||||||
}).untyped,
|
}).erased;
|
||||||
|
|
||||||
|
return .{
|
||||||
|
.type_erased_ctx = ctx,
|
||||||
|
.type_erased_callback = erased,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -61,6 +67,6 @@ test "syntax" {
|
||||||
_ = reference;
|
_ = reference;
|
||||||
_ = release;
|
_ = release;
|
||||||
_ = submit;
|
_ = submit;
|
||||||
_ = OnSubmittedWorkDone;
|
_ = WorkDoneCallback;
|
||||||
_ = WorkDoneStatus;
|
_ = WorkDoneStatus;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue