From b4830688bb8162632eee303fcbca6a42b8bbaccf Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Fri, 29 Jul 2022 23:52:42 -0700 Subject: [PATCH] gpu: internalize Queue types Signed-off-by: Stephen Gutekanst --- gpu/src/device.zig | 3 +-- gpu/src/interface.zig | 6 +++--- gpu/src/queue.zig | 36 ++++++++++++++++++------------------ 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/gpu/src/device.zig b/gpu/src/device.zig index b0ed6f45..25491e8c 100644 --- a/gpu/src/device.zig +++ b/gpu/src/device.zig @@ -1,5 +1,4 @@ const Queue = @import("queue.zig").Queue; -const QueueDescriptor = @import("queue.zig").QueueDescriptor; const BindGroup = @import("bind_group.zig").BindGroup; const BindGroupLayout = @import("bind_group_layout.zig").BindGroupLayout; const Buffer = @import("buffer.zig").Buffer; @@ -51,7 +50,7 @@ pub const Device = opaque { required_features_count: u32 = 0, required_features: ?[*]const FeatureName = null, required_limits: ?*const RequiredLimits, - default_queue: QueueDescriptor, + default_queue: Queue.Descriptor, }; pub inline fn createBindGroup(device: *Device, descriptor: *const BindGroup.Descriptor) *BindGroup { diff --git a/gpu/src/interface.zig b/gpu/src/interface.zig index a148674d..6d8ec187 100644 --- a/gpu/src/interface.zig +++ b/gpu/src/interface.zig @@ -131,7 +131,7 @@ pub fn Interface(comptime T: type) type { assertDecl(T, "querySetReference", fn (query_set: *gpu.QuerySet) callconv(.Inline) void); assertDecl(T, "querySetRelease", fn (query_set: *gpu.QuerySet) callconv(.Inline) void); assertDecl(T, "queueCopyTextureForBrowser", fn (queue: *gpu.Queue, source: *const gpu.ImageCopyTexture, destination: *const gpu.ImageCopyTexture, copy_size: *const gpu.Extent3D, options: *const gpu.CopyTextureForBrowserOptions) callconv(.Inline) void); - assertDecl(T, "queueOnSubmittedWorkDone", fn (queue: *gpu.Queue, signal_value: u64, callback: gpu.QueueWorkDoneCallback, userdata: *anyopaque) callconv(.Inline) void); + assertDecl(T, "queueOnSubmittedWorkDone", fn (queue: *gpu.Queue, signal_value: u64, callback: gpu.Queue.WorkDoneCallback, userdata: *anyopaque) callconv(.Inline) void); assertDecl(T, "queueSetLabel", fn (queue: *gpu.Queue, label: [*:0]const u8) callconv(.Inline) void); assertDecl(T, "queueSubmit", fn (queue: *gpu.Queue, command_count: u32, commands: [*]*gpu.CommandBuffer) callconv(.Inline) void); assertDecl(T, "queueWriteBuffer", fn (queue: *gpu.Queue, buffer: *gpu.Buffer, buffer_offset: u64, data: *anyopaque, size: usize) callconv(.Inline) void); @@ -809,7 +809,7 @@ pub fn Export(comptime T: type) type { } // WGPU_EXPORT void wgpuQueueOnSubmittedWorkDone(WGPUQueue queue, uint64_t signalValue, WGPUQueueWorkDoneCallback callback, void * userdata); - export fn wgpuQueueOnSubmittedWorkDone(queue: *gpu.Queue, signal_value: u64, callback: gpu.QueueWorkDoneCallback, userdata: *anyopaque) void { + export fn wgpuQueueOnSubmittedWorkDone(queue: *gpu.Queue, signal_value: u64, callback: gpu.Queue.WorkDoneCallback, userdata: *anyopaque) void { T.queueOnSubmittedWorkDone(queue, signal_value, callback, userdata); } @@ -1924,7 +1924,7 @@ pub const StubInterface = Interface(struct { unreachable; } - pub inline fn queueOnSubmittedWorkDone(queue: *gpu.Queue, signal_value: u64, callback: gpu.QueueWorkDoneCallback, userdata: *anyopaque) void { + pub inline fn queueOnSubmittedWorkDone(queue: *gpu.Queue, signal_value: u64, callback: gpu.Queue.WorkDoneCallback, userdata: *anyopaque) void { _ = queue; _ = signal_value; _ = callback; diff --git a/gpu/src/queue.zig b/gpu/src/queue.zig index a3a9012a..9537c376 100644 --- a/gpu/src/queue.zig +++ b/gpu/src/queue.zig @@ -8,11 +8,28 @@ const CopyTextureForBrowserOptions = @import("types.zig").CopyTextureForBrowserO const Impl = @import("interface.zig").Impl; pub const Queue = opaque { + pub const WorkDoneCallback = fn ( + status: WorkDoneStatus, + userdata: *anyopaque, + ) callconv(.C) void; + + pub const WorkDoneStatus = enum(u32) { + success = 0x00000000, + err = 0x00000001, + unknown = 0x00000002, + device_lost = 0x00000003, + }; + + pub const Descriptor = extern struct { + next_in_chain: ?*const ChainedStruct = null, + label: ?[*:0]const u8 = null, + }; + pub inline fn copyTextureForBrowser(queue: *Queue, source: *const ImageCopyTexture, destination: *const ImageCopyTexture, copy_size: *const Extent3D, options: *const CopyTextureForBrowserOptions) void { Impl.queueCopyTextureForBrowser(queue, source, destination, copy_size, options); } - pub inline fn onSubmittedWorkDone(queue: *Queue, signal_value: u64, callback: QueueWorkDoneCallback, userdata: *anyopaque) void { + pub inline fn onSubmittedWorkDone(queue: *Queue, signal_value: u64, callback: Queue.WorkDoneCallback, userdata: *anyopaque) void { Impl.queueOnSubmittedWorkDone(queue, signal_value, callback, userdata); } @@ -40,20 +57,3 @@ pub const Queue = opaque { Impl.queueRelease(queue); } }; - -pub const QueueWorkDoneCallback = fn ( - status: QueueWorkDoneStatus, - userdata: *anyopaque, -) callconv(.C) void; - -pub const QueueWorkDoneStatus = enum(u32) { - success = 0x00000000, - err = 0x00000001, - unknown = 0x00000002, - device_lost = 0x00000003, -}; - -pub const QueueDescriptor = extern struct { - next_in_chain: ?*const ChainedStruct = null, - label: ?[*:0]const u8 = null, -};