From e516ea4c798d4c02e77836d5e8196decb90a8774 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 9 Apr 2019 23:36:35 +0300 Subject: backend/drm: check format when scanning out DMA-BUF --- include/backend/drm/drm.h | 2 ++ include/backend/drm/properties.h | 3 ++- include/wlr/render/drm_format_set.h | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/backend/drm/drm.h b/include/backend/drm/drm.h index 6481f085..ba08449a 100644 --- a/include/backend/drm/drm.h +++ b/include/backend/drm/drm.h @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include "iface.h" @@ -27,6 +28,7 @@ struct wlr_drm_plane { struct wlr_drm_surface mgpu_surf; uint32_t drm_format; // ARGB8888 or XRGB8888 + struct wlr_drm_format_set formats; // Only used by cursor float matrix[9]; diff --git a/include/backend/drm/properties.h b/include/backend/drm/properties.h index b4d43bdd..28f0dbe4 100644 --- a/include/backend/drm/properties.h +++ b/include/backend/drm/properties.h @@ -44,6 +44,7 @@ union wlr_drm_plane_props { struct { uint32_t type; uint32_t rotation; // Not guaranteed to exist + uint32_t in_formats; // Not guaranteed to exist // atomic-modesetting only @@ -58,7 +59,7 @@ union wlr_drm_plane_props { uint32_t fb_id; uint32_t crtc_id; }; - uint32_t props[12]; + uint32_t props[13]; }; bool get_drm_connector_props(int fd, uint32_t id, diff --git a/include/wlr/render/drm_format_set.h b/include/wlr/render/drm_format_set.h index 588914ae..15d4eea3 100644 --- a/include/wlr/render/drm_format_set.h +++ b/include/wlr/render/drm_format_set.h @@ -21,6 +21,9 @@ void wlr_drm_format_set_finish(struct wlr_drm_format_set *set); const struct wlr_drm_format *wlr_drm_format_set_get( const struct wlr_drm_format_set *set, uint32_t format); +bool wlr_drm_format_set_has(const struct wlr_drm_format_set *set, + uint32_t format, uint64_t modifier); + bool wlr_drm_format_set_add(struct wlr_drm_format_set *set, uint32_t format, uint64_t modifier); -- cgit v1.2.3