summaryrefslogtreecommitdiff
path: root/src/screen/drm/crtc
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2025-02-02 21:54:14 +0100
committerNathan Reiner <nathan@nathanreiner.xyz>2025-02-02 21:54:14 +0100
commit811a6bd572f4c6b26e99b4e746f5d710947ee934 (patch)
tree3ff6375ce2d7ea13e0d49f7800757a1b42604884 /src/screen/drm/crtc
parent3f4375a14218796cbd7bfff1c8cfff0f7bb1f6df (diff)
screen: drm change struct layout
Diffstat (limited to 'src/screen/drm/crtc')
-rw-r--r--src/screen/drm/crtc/root.zig119
1 files changed, 0 insertions, 119 deletions
diff --git a/src/screen/drm/crtc/root.zig b/src/screen/drm/crtc/root.zig
deleted file mode 100644
index bbb72cb..0000000
--- a/src/screen/drm/crtc/root.zig
+++ /dev/null
@@ -1,119 +0,0 @@
-const std = @import("std");
-const Card = @import("../card.zig").Card;
-const Drm = @import("../request.zig").Drm;
-const Connector = @import("../connector/root.zig").Connector;
-const fb = @import("../frame-buffer/root.zig");
-const FrameBuffer = fb.FrameBuffer;
-const DoubleBuffer = fb.DoubleBuffer;
-const Mode = @import("../connector/mode.zig").Mode;
-
-pub const RawCrtc = extern struct {
- connector_ids: ?*u32,
- count_connectors: u32,
- id: u32,
- buffer_id: u32,
- x: u32,
- y: u32,
- gamma_size: u32,
- mode_valid: u32,
- mode: Mode,
-};
-
-const PageFlipEvent = packed struct(u32) {
- event: bool,
- is_async: bool,
- absolute: bool,
- relative: bool,
- __padding: u28,
-};
-
-const PageFlip = extern struct {
- crtc_id: u32,
- buffer_id: u32,
- flags: PageFlipEvent,
- __reserved: u32,
- user_data: u64,
-};
-
-pub const Crtc = struct {
- const Self = @This();
-
- connector_ids: ?*u32,
- count_connectors: u32,
- id: u32,
- buffer_id: u32,
- x: u32,
- y: u32,
- mode: Mode,
- 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 .{
- .connector_ids = raw.connector_ids,
- .count_connectors = raw.count_connectors,
- .id = raw.id,
- .buffer_id = raw.buffer_id,
- .x = raw.x,
- .y = raw.y,
- .mode = raw.mode,
- .mode_valid = raw.mode_valid,
- .gamma_size = raw.gamma_size,
- .card = card,
- };
- }
-
- pub fn attach(self: *Self, frame_buffer: *FrameBuffer, connector: *Connector, mode: Mode) !void {
- self.connector_ids = &connector.id;
- self.count_connectors = 1;
-
- var crtc = RawCrtc {
- .id = self.id,
- .x = self.x,
- .y = self.y,
- .buffer_id = frame_buffer.id,
- .connector_ids = self.connector_ids,
- .count_connectors = self.count_connectors,
- .mode = mode,
- .mode_valid = 1,
- .gamma_size = self.gamma_size,
- };
-
- try Drm.set_crtc.request(self.card.file.handle, RawCrtc, &crtc);
- }
-
- pub fn page_flip(self: *Self, double_buffer: *DoubleBuffer) !void {
- double_buffer.swap();
-
- var flip = std.mem.zeroInit(PageFlip, .{
- .buffer_id = double_buffer.crtc_buffer().id,
- .crtc_id = self.id,
- .flags = std.mem.zeroInit(PageFlipEvent, .{ .event = true }),
- });
-
- try Drm.page_flip.request(self.card.file.handle, PageFlip, &flip);
- }
-
- pub fn detach(self: *Self) void {
- var crtc = RawCrtc {
- .id = self.id,
- .x = self.x,
- .y = self.y,
- .buffer_id = self.buffer_id,
- .connector_ids = self.connector_ids,
- .count_connectors = self.count_connectors,
- .mode = self.mode,
- .mode_valid = self.mode_valid,
- .gamma_size = self.gamma_size,
- };
-
- Drm.set_crtc.request(
- self.card.file.handle,
- RawCrtc,
- &crtc
- ) catch |err| std.debug.panic("set crtc failed on detach: {}", .{err});
- }
-};