feat: open Card from Device

This commit is contained in:
Jackson Netherwood-Imig
2026-03-05 16:50:40 -08:00
parent d5db200d07
commit 411ec740e9
2 changed files with 13 additions and 6 deletions
+4 -3
View File
@@ -5,12 +5,13 @@ pub fn main(init: std.process.Init) !void {
const io = init.io; const io = init.io;
const gpa = init.gpa; const gpa = init.gpa;
const devid = drm.makeDev(226, 128); const device = drm.Device.getFromDevId(io, gpa, drm.makeDev(226, 0), .{}) catch
const device = try drm.Device.getFromDevId(io, gpa, devid, .{}); try drm.Device.getFromDevId(io, gpa, drm.makeDev(226, 1), .{});
std.log.info("Device node path: {s}.", .{device.nodePath()}); 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); defer card.close(io);
const res = try card.getModesettingResources(gpa); const res = try card.getModesettingResources(gpa);
defer res.deinit(gpa); defer res.deinit(gpa);
+9 -3
View File
@@ -1,9 +1,11 @@
const std = @import("std"); 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 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(); const Device = @This();
node_type: NodeType, 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; } 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) { pub const BusType = enum(c_int) {
pci = 0, pci = 0,
usb = 1, usb = 1,