gpu: make Instance.requestAdapter friendlier

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2022-07-31 10:48:58 -07:00 committed by Stephen Gutekanst
parent 12e8bef9eb
commit 45b5e4ce23

View file

@ -15,8 +15,34 @@ pub const Instance = opaque {
return Impl.instanceCreateSurface(instance, descriptor);
}
pub inline fn requestAdapter(instance: *Instance, options: *const RequestAdapterOptions, callback: RequestAdapterCallback, userdata: ?*anyopaque) void {
Impl.instanceRequestAdapter(instance, options, callback, userdata);
pub inline fn requestAdapter(
instance: *Instance,
options: *const RequestAdapterOptions,
comptime Context: type,
comptime callback: fn (
status: RequestAdapterStatus,
adapter: *Adapter,
message: ?[*:0]const u8,
ctx: Context,
) callconv(.Inline) void,
context: Context,
) void {
const Helper = struct {
pub fn callback(
status: RequestAdapterStatus,
adapter: *Adapter,
message: ?[*:0]const u8,
userdata: ?*anyopaque,
) callconv(.C) void {
callback(
status,
adapter,
message,
if (Context == void) {} orelse @ptrCast(Context, userdata),
);
}
};
Impl.instanceRequestAdapter(instance, options, Helper.callback, if (Context == void) null orelse context);
}
pub inline fn reference(instance: *Instance) void {