summaryrefslogtreecommitdiff
path: root/src/screen/drm/encoder/root.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/screen/drm/encoder/root.zig')
-rw-r--r--src/screen/drm/encoder/root.zig40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/screen/drm/encoder/root.zig b/src/screen/drm/encoder/root.zig
new file mode 100644
index 0000000..0712c76
--- /dev/null
+++ b/src/screen/drm/encoder/root.zig
@@ -0,0 +1,40 @@
+const std = @import("std");
+const Drm = @import("../request.zig").Drm;
+const Card = @import("../card.zig").Card;
+
+const Type = @import("type.zig").Type;
+
+pub const RawEncoder = extern struct {
+ id: u32,
+ type: Type,
+ crtc_id: u32,
+ possible_crtcs: u32,
+ possible_clones: u32,
+};
+
+pub const Encoder = struct {
+ const Self = @This();
+
+ id: u32,
+ type: Type,
+ possible_crtcs: u32,
+ possible_clones: u32,
+ card: *Card,
+
+ pub fn init(card: *Card, id: u32) !Self {
+ var raw = std.mem.zeroInit(RawEncoder, .{ .id = id });
+ try Drm.get_encoder.request(card.file.handle, RawEncoder, &raw);
+
+ return .{
+ .id = raw.id,
+ .type = raw.type,
+ .possible_crtcs = raw.possible_crtcs,
+ .possible_clones = raw.possible_clones,
+ .card = card
+ };
+ }
+
+ pub fn deinit(self: *Self) void {
+ _ = self;
+ }
+};