commit 7c537cbc796a39d42a2a9592fcae2875aafcee7c
parent c81a9ca715aac3ccdc03f5562aa2c91ae31219eb
Author: Christian Ermann <christianermann@gmail.com>
Date: Sun, 20 Apr 2025 19:43:35 -0700
Add logging configuration
Diffstat:
2 files changed, 57 insertions(+), 0 deletions(-)
diff --git a/src/logging.zig b/src/logging.zig
@@ -0,0 +1,35 @@
+const std = @import("std");
+
+const c = @cImport({
+ @cInclude("wgpu.h");
+});
+
+pub const LogLevel = enum(u32) {
+ off = 0x00000000,
+ err = 0x00000001,
+ warn = 0x00000002,
+ info = 0x00000003,
+ debug = 0x00000004,
+ trace = 0x00000005,
+};
+
+pub const LogCallback = fn (LogLevel, []const u8) void;
+
+pub fn setLogLevel(level: LogLevel) void {
+ c.wgpuSetLogLevel(@intCast(@intFromEnum(level)));
+}
+
+pub fn setLogCallback(comptime callback: LogCallback) void {
+ const Callback = struct {
+ const user_callback = callback;
+ pub fn callback_c(
+ level: c_int,
+ message: ?[*:0]const u8,
+ userdata: ?*anyopaque,
+ ) callconv(.C) void {
+ _ = userdata;
+ user_callback(@enumFromInt(level), std.mem.span(message.?));
+ }
+ };
+ c.wgpuSetLogCallback(@ptrCast(&Callback.callback_c), null);
+}
diff --git a/src/main.zig b/src/main.zig
@@ -2,6 +2,25 @@ const std = @import("std");
const glfw = @import("glfw.zig");
const Instance = @import("instance.zig").Instance;
+const Logging = @import("logging.zig");
+
+pub fn zgpu_log_callback(level: Logging.LogLevel, message: []const u8) void {
+ switch (level) {
+ .err => {
+ std.log.err("[wgpu] {s}", .{message});
+ },
+ .warn => {
+ std.log.warn("[wgpu] {s}", .{message});
+ },
+ .info => {
+ std.log.debug("[wgpu] {s}", .{message});
+ },
+ .debug, .trace => {
+ std.log.debug("[wgpu] {s}", .{message});
+ },
+ .off => unreachable,
+ }
+}
pub fn main() !void {
try glfw.init();
@@ -13,6 +32,9 @@ pub fn main() !void {
const display = try glfw.native.getX11Display();
const window_id = try glfw.native.getX11Window(window);
+ Logging.setLogCallback(zgpu_log_callback);
+ Logging.setLogLevel(.warn);
+
const instance = Instance.create(&.{
.next = .{
.extras = &.{