backend/drm: add libliftoff interface

This commit is contained in:
Simon Ser 2022-08-18 19:17:33 +02:00
parent b4e9487312
commit 9d43e7e4d6
11 changed files with 415 additions and 3 deletions

View file

@ -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;

View file

@ -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