aboutsummaryrefslogtreecommitdiff
path: root/include/backend
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2022-08-18 19:17:33 +0200
committerSimon Ser <contact@emersion.fr>2023-02-20 18:38:57 +0100
commit9d43e7e4d67d4076c8b20ee2715eadec86a83e73 (patch)
tree1c75d2e0719d5a48ac97d5d1fb80c28f84ee66a1 /include/backend
parentb4e9487312a8b5b80c56ddfdd5751c12882cd3a9 (diff)
backend/drm: add libliftoff interface
Diffstat (limited to 'include/backend')
-rw-r--r--include/backend/drm/drm.h6
-rw-r--r--include/backend/drm/iface.h9
2 files changed, 15 insertions, 0 deletions
diff --git a/include/backend/drm/drm.h b/include/backend/drm/drm.h
index 0c07811b..f2cd9c50 100644
--- a/include/backend/drm/drm.h
+++ b/include/backend/drm/drm.h
@@ -30,11 +30,16 @@ struct wlr_drm_plane {
struct wlr_drm_format_set formats;
union wlr_drm_plane_props props;
+
+ uint32_t initial_crtc_id;
+ struct liftoff_plane *liftoff;
+ struct liftoff_layer *liftoff_layer;
};
struct wlr_drm_crtc {
uint32_t id;
struct wlr_drm_lease *lease;
+ struct liftoff_output *liftoff;
// Atomic modesetting only
uint32_t mode_id;
@@ -60,6 +65,7 @@ struct wlr_drm_backend {
int fd;
char *name;
struct wlr_device *dev;
+ struct liftoff_device *liftoff;
size_t num_crtcs;
struct wlr_drm_crtc *crtcs;
diff --git a/include/backend/drm/iface.h b/include/backend/drm/iface.h
index d52bbd3d..c4bd62e4 100644
--- a/include/backend/drm/iface.h
+++ b/include/backend/drm/iface.h
@@ -13,6 +13,8 @@ struct wlr_drm_connector_state;
// Used to provide atomic or legacy DRM functions
struct wlr_drm_interface {
+ bool (*init)(struct wlr_drm_backend *drm);
+ void (*finish)(struct wlr_drm_backend *drm);
// Commit all pending changes on a CRTC.
bool (*crtc_commit)(struct wlr_drm_connector *conn,
const struct wlr_drm_connector_state *state, uint32_t flags,
@@ -21,8 +23,15 @@ struct wlr_drm_interface {
extern const struct wlr_drm_interface atomic_iface;
extern const struct wlr_drm_interface legacy_iface;
+extern const struct wlr_drm_interface liftoff_iface;
bool drm_legacy_crtc_set_gamma(struct wlr_drm_backend *drm,
struct wlr_drm_crtc *crtc, size_t size, uint16_t *lut);
+bool create_mode_blob(struct wlr_drm_backend *drm,
+ struct wlr_drm_connector *conn,
+ const struct wlr_drm_connector_state *state, uint32_t *blob_id);
+bool create_gamma_lut_blob(struct wlr_drm_backend *drm,
+ size_t size, const uint16_t *lut, uint32_t *blob_id);
+
#endif