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 --- render/drm_format_set.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'render/drm_format_set.c') diff --git a/render/drm_format_set.c b/render/drm_format_set.c index df683b6d..b09a68a4 100644 --- a/render/drm_format_set.c +++ b/render/drm_format_set.c @@ -35,6 +35,26 @@ const struct wlr_drm_format *wlr_drm_format_set_get( return ptr ? *ptr : NULL; } +bool wlr_drm_format_set_has(const struct wlr_drm_format_set *set, + uint32_t format, uint64_t modifier) { + const struct wlr_drm_format *fmt = wlr_drm_format_set_get(set, format); + if (!fmt) { + return false; + } + + if (modifier == DRM_FORMAT_MOD_INVALID) { + return true; + } + + for (size_t i = 0; i < fmt->len; ++i) { + if (fmt->modifiers[i] == modifier) { + return true; + } + } + + return false; +} + bool wlr_drm_format_set_add(struct wlr_drm_format_set *set, uint32_t format, uint64_t modifier) { struct wlr_drm_format **ptr = format_set_get_ref(set, format); -- cgit v1.2.3