diff --git a/gpu/build.zig b/gpu/build.zig index 12d9ae04..140cf466 100644 --- a/gpu/build.zig +++ b/gpu/build.zig @@ -27,6 +27,7 @@ pub fn build(b: *std.build.Builder) void { example.setBuildMode(mode); example.install(); example.linkLibC(); + example.addPackagePath("gpu", "src/main.zig"); example.addPackagePath("glfw", "libs/mach-glfw/src/main.zig"); glfw.link(b, example, .{}); gpu_dawn.link(b, example, .{}); diff --git a/gpu/examples/sample_utils.zig b/gpu/examples/sample_utils.zig index d4e7e84a..7ba39909 100644 --- a/gpu/examples/sample_utils.zig +++ b/gpu/examples/sample_utils.zig @@ -1,6 +1,7 @@ const std = @import("std"); const assert = std.debug.assert; const glfw = @import("glfw"); +const gpu = @import("gpu"); const c = @import("c.zig").c; const objc = @cImport({ @cInclude("objc/message.h"); @@ -17,6 +18,7 @@ fn printDeviceError(error_type: c.WGPUErrorType, message: [*c]const u8, _: ?*any } const Setup = struct { + native_instance: gpu.NativeInstance, instance: c.WGPUInstance, backend_type: c.WGPUBackendType, device: c.WGPUDevice, @@ -97,6 +99,7 @@ pub fn setup(allocator: std.mem.Allocator) !Setup { c.dawnProcSetProcs(backend_procs); backend_procs.*.deviceSetUncapturedErrorCallback.?(backend_device, printDeviceError, null); return Setup{ + .native_instance = gpu.NativeInstance.wrap(c.machDawnNativeInstance_get(instance).?), .instance = c.machDawnNativeInstance_get(instance), .backend_type = backend_type, .device = backend_device, diff --git a/gpu/src/NativeInstance.zig b/gpu/src/NativeInstance.zig index 4634c6d7..75c43db7 100644 --- a/gpu/src/NativeInstance.zig +++ b/gpu/src/NativeInstance.zig @@ -11,9 +11,9 @@ instance: c.WGPUInstance, vtable: Interface.VTable, /// Wraps a native WGPUInstance to provide an implementation of the gpu.Interface. -pub fn wrap(instance: c.WGPUInstance) NativeInstance { +pub fn wrap(instance: *anyopaque) NativeInstance { return .{ - .instance = instance, + .instance = @ptrCast(c.WGPUInstance, instance), .vtable = undefined, // TODO }; } diff --git a/gpu/src/main.zig b/gpu/src/main.zig index 3c1b77c5..06bfbe14 100644 --- a/gpu/src/main.zig +++ b/gpu/src/main.zig @@ -16,15 +16,15 @@ //! //! const std = @import("std"); -const Interface = @import("Interface.zig"); -const NativeInstance = @import("NativeInstance.zig"); +pub const Interface = @import("Interface.zig"); +pub const NativeInstance = @import("NativeInstance.zig"); -const Adapter = @import("Adapter.zig"); -const Device = @import("Device.zig"); -const Surface = @import("Surface.zig"); +pub const Adapter = @import("Adapter.zig"); +pub const Device = @import("Device.zig"); +pub const Surface = @import("Surface.zig"); -const FeatureName = @import("feature_name.zig").FeatureName; -const SupportedLimits = @import("supported_limits.zig").SupportedLimits; +pub const FeatureName = @import("feature_name.zig").FeatureName; +pub const SupportedLimits = @import("supported_limits.zig").SupportedLimits; test "syntax" { _ = Interface;