zgpu

git clone git://git.electrosoup.com/zgpu
Log | Files | Refs | Submodules | README

commit 6b4d72a5f6316694f28dd64ea145da0f1de769a4
parent 7b5344876542509f09488fb02e11c3513aee3164
Author: Christian Ermann <christianermann@gmail.com>
Date:   Wed, 23 Apr 2025 18:59:55 -0700

Get and release queue

Diffstat:
Msrc/device.zig | 12++++++------
Msrc/main.zig | 3+++
Asrc/queue.zig | 21+++++++++++++++++++++
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 +};