#pragma once
#include <inttypes.h>
+#include <libudev.h>
#include <stdbool.h>
#include <stdlib.h>
#include <systemd/sd-bus.h>
typedef struct grdev_card_vtable grdev_card_vtable;
typedef struct grdev_card grdev_card;
+/*
+ * DRM cards
+ */
+
+bool grdev_is_drm_card(grdev_card *card);
+grdev_card *grdev_find_drm_card(grdev_session *session, dev_t devnum);
+int grdev_drm_card_new(grdev_card **out, grdev_session *session, struct udev_device *ud);
+void grdev_drm_card_hotplug(grdev_card *card, struct udev_device *ud);
+
/*
* Displays
*/
};
struct grdev_tile {
- LIST_FIELDS(grdev_tile, childs_by_node);
+ LIST_FIELDS(grdev_tile, children_by_node);
grdev_tile *parent;
grdev_display *display;
} leaf;
struct {
- size_t n_childs;
+ size_t n_children;
LIST_HEAD(grdev_tile, child_list);
} node;
};
struct grdev_display {
grdev_session *session;
char *name;
+ void *userdata;
size_t n_leafs;
grdev_tile *tile;
grdev_tile *tile;
grdev_display_cache *cache;
+ sd_event_source *vsync_src;
uint32_t width;
uint32_t height;
+ uint32_t vrefresh;
size_t max_fbs;
grdev_fb *front;
void grdev_pipe_ready(grdev_pipe *pipe, bool running);
void grdev_pipe_frame(grdev_pipe *pipe);
+void grdev_pipe_schedule(grdev_pipe *pipe, uint64_t frames);
/*
* Cards