commit 6b4d72a5f6316694f28dd64ea145da0f1de769a4
parent 7b5344876542509f09488fb02e11c3513aee3164
Author: Christian Ermann <christianermann@gmail.com>
Date: Wed, 23 Apr 2025 18:59:55 -0700
Get and release queue
Diffstat:
3 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/src/device.zig b/src/device.zig
@@ -2,6 +2,7 @@ const std = @import("std");
const c = @import("c.zig").c;
const ChainedStruct = @import("common.zig").ChainedStruct;
+const Queue = @import("queue.zig").Queue;
pub const FeatureName = enum(u32) {
undefined = 0x00000000,
@@ -58,11 +59,6 @@ pub const RequiredLimits = extern struct {
limits: Limits,
};
-pub const QueueDescriptor = extern struct {
- next: ?*const ChainedStruct = null,
- label: ?[*:0]const u8 = null,
-};
-
pub const DeviceLostReason = enum(u32) {
unknown = 0x00000001,
destroyed = 0x00000002,
@@ -102,7 +98,7 @@ pub const Device = opaque {
required_feature_count: c_int,
required_features: ?[*]const FeatureName,
required_limits: ?*const RequiredLimits,
- default_queue: QueueDescriptor,
+ default_queue: Queue.Descriptor,
device_lost_callback: ?*const DeviceLostCallback,
device_lost_userdata: ?*anyopaque,
uncaptured_error_callback_info: UncapturedErrorCallbackInfo,
@@ -112,6 +108,10 @@ pub const Device = opaque {
c.wgpuDeviceRelease(@ptrCast(device));
}
+ pub fn getQueue(device: *Device) *Queue {
+ return @ptrCast(c.wgpuDeviceGetQueue(@ptrCast(device)).?);
+ }
+
// createBindGroup
// createBindGroupLayout
// createBuffer
diff --git a/src/main.zig b/src/main.zig
@@ -102,4 +102,7 @@ pub fn main() !void {
},
});
defer device.release();
+
+ const queue = device.getQueue();
+ defer queue.release();
}
diff --git a/src/queue.zig b/src/queue.zig
@@ -0,0 +1,21 @@
+const c = @import("c.zig").c;
+const ChainedStruct = @import("common.zig").ChainedStruct;
+
+pub const Queue = opaque {
+ pub const Descriptor = extern struct {
+ next: ?*const ChainedStruct = null,
+ label: ?[*:0]const u8 = null,
+ };
+
+ pub fn release(queue: *Queue) void {
+ c.wgpuQueueRelease(@ptrCast(queue));
+ }
+
+ // onSubmittedWorkDone
+ // setLabel
+ // submit
+ // writeBuffer
+ // writeTexture
+ // reference
+ // release
+};