From 56d1f4e7bcbeb6ebd7e54ebd76859370cc2b696d Mon Sep 17 00:00:00 2001 From: Nicholas Niro Date: Tue, 29 Oct 2019 21:50:54 -0400 Subject: [PATCH] backend-drm: Fix for gbm modifiers when they are not available. When the HAVE_GBM_MODIFIERS is unset, make the code drop back to a single plane version like other places in the code. --- libweston/backend-drm/fb.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libweston/backend-drm/fb.c b/libweston/backend-drm/fb.c index 1eb4a9eb..0132053e 100644 --- a/libweston/backend-drm/fb.c +++ b/libweston/backend-drm/fb.c @@ -342,6 +342,7 @@ drm_fb_get_from_dmabuf(struct linux_dmabuf_buffer *dmabuf, goto err_free; } +#ifdef HAVE_GBM_MODIFIERS fb->num_planes = dmabuf->attributes.n_planes; for (i = 0; i < dmabuf->attributes.n_planes; i++) { union gbm_bo_handle handle; @@ -351,6 +352,20 @@ drm_fb_get_from_dmabuf(struct linux_dmabuf_buffer *dmabuf, goto err_free; fb->handles[i] = handle.u32; } +#else /* NOT HAVE_GBM_MODIFIERS */ + { + union gbm_bo_handle handle; + + fb->num_planes = 1; + + handle = gbm_bo_get_handle(fb->bo); + + if (handle.s32 == -1) + goto err_free; + fb->handles[0] = handle.u32; + } +#endif /* NOT HAVE_GBM_MODIFIERS */ + if (drm_fb_addfb(backend, fb) != 0) goto err_free;