From 88aa2940b27044794d4dcb49c924a5df17cc0055 Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Sat, 1 Feb 2025 16:19:47 +0100 Subject: screen: add crtc --- src/screen/drm/crtc/root.zig | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/screen/drm/crtc/root.zig (limited to 'src/screen/drm/crtc/root.zig') diff --git a/src/screen/drm/crtc/root.zig b/src/screen/drm/crtc/root.zig new file mode 100644 index 0000000..7601732 --- /dev/null +++ b/src/screen/drm/crtc/root.zig @@ -0,0 +1,45 @@ +const std = @import("std"); +const Card = @import("../card.zig").Card; +const Drm = @import("../request.zig").Drm; +const Connector = @import("../connector/root.zig").Connector; + +pub const RawCrtc = extern struct { + connectors: ?*Connector, + count_connectors: u32, + id: u32, + buffer_id: u32, + x: u32, + y: u32, + gamma_size: u32, + mode_valid: u32, +}; + +pub const Crtc = struct { + const Self = @This(); + + id: u32, + buffer_id: u32, + x: u32, + y: u32, + mode_valid: u32, + gamma_size: u32, + card: *Card, + + pub fn init(card: *Card, id: u32) !Self { + var raw = std.mem.zeroInit(RawCrtc, .{ .id = id }); + try Drm.get_crtc.request(card.file.handle, RawCrtc, &raw); + return .{ + .id = raw.id, + .buffer_id = raw.buffer_id, + .x = raw.x, + .y = raw.y, + .mode_valid = raw.mode_valid, + .gamma_size = raw.gamma_size, + .card = card, + }; + } + + pub fn deinit(self: *Self) void { + _ = self; + } +}; -- cgit v1.2.3-70-g09d2