From 411ec740e9128acd058629d701b0c7a5eec834d2 Mon Sep 17 00:00:00 2001 From: Jackson Netherwood-Imig Date: Thu, 5 Mar 2026 16:50:40 -0800 Subject: [PATCH] feat: open Card from Device --- example.zig | 7 ++++--- src/Device.zig | 12 +++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/example.zig b/example.zig index bb27d47..946aaf7 100644 --- a/example.zig +++ b/example.zig @@ -5,12 +5,13 @@ pub fn main(init: std.process.Init) !void { const io = init.io; const gpa = init.gpa; - const devid = drm.makeDev(226, 128); - const device = try drm.Device.getFromDevId(io, gpa, devid, .{}); + const device = drm.Device.getFromDevId(io, gpa, drm.makeDev(226, 0), .{}) catch + try drm.Device.getFromDevId(io, gpa, drm.makeDev(226, 1), .{}); std.log.info("Device node path: {s}.", .{device.nodePath()}); - const card = try drm.Card.openAuto(io); + // const card = try drm.Card.openAuto(io); + const card = try device.openNode(io); defer card.close(io); const res = try card.getModesettingResources(gpa); defer res.deinit(gpa); diff --git a/src/Device.zig b/src/Device.zig index 9480698..661718d 100644 --- a/src/Device.zig +++ b/src/Device.zig @@ -1,9 +1,11 @@ const std = @import("std"); -const drm = @import("drm.zig"); -const sys = @import("sys.zig"); -const log = std.log.scoped(.drm); const path_max = std.os.linux.PATH_MAX; +const Card = @import("Card.zig"); +const drm = @import("drm.zig"); +const sys = @import("sys.zig"); + +const log = std.log.scoped(.drm); const Device = @This(); node_type: NodeType, @@ -69,6 +71,10 @@ pub fn getFromDevId(io: std.Io, gpa: std.mem.Allocator, devid: std.posix.dev_t, } else error.NoDeviceFound; } +pub fn openNode(self: *const Device, io: std.Io) std.Io.File.OpenError!Card { + return Card.open(io, self.nodePath()); +} + pub const BusType = enum(c_int) { pci = 0, usb = 1,