[PATCH 1/2] compositor-drm: don't put y-inverted / interlaced / bottom-first dmabufs on overlays

Micah Fedke micah.fedke at collabora.co.uk
Wed Feb 1 20:28:23 UTC 2017


This patch checks the attribute flags on incoming dmabufs and refuses to
put them overlays if they have any of the flags set (currently:
ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_Y_INVERT,
ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_INTERLACED and
ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_BOTTOM_FIRST), instead defaulting to
the gl-renderer which can handle some of the flags.

This check should be superceded by buffer transforms, when they become
available.
---
 libweston/compositor-drm.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
index 564e3244..a16136d3 100644
--- a/libweston/compositor-drm.c
+++ b/libweston/compositor-drm.c
@@ -60,6 +60,7 @@
 #include "vaapi-recorder.h"
 #include "presentation-time-server-protocol.h"
 #include "linux-dmabuf.h"
+#include "linux-dmabuf-unstable-v1-server-protocol.h"
 
 #ifndef DRM_CAP_TIMESTAMP_MONOTONIC
 #define DRM_CAP_TIMESTAMP_MONOTONIC 0x6
@@ -1016,7 +1017,18 @@ drm_output_prepare_overlay_view(struct drm_output *output,
 			.format = dmabuf->attributes.format
 		};
 
-		if (dmabuf->attributes.n_planes != 1 || dmabuf->attributes.offset[0] != 0)
+                /* XXX: TODO:
+                 *
+                 * Currently the buffer is rejected if any dmabuf attribute
+                 * flag is set.  This keeps us from passing an inverted /
+                 * interlaced / bottom-first buffer (or any other type that may
+                 * be added in the future) through to an overlay.  Ultimately,
+                 * these types of buffers should be handled through buffer
+                 * transforms and not as spot-checks requiring specific
+                 * knowledge. */
+		if (dmabuf->attributes.n_planes != 1 ||
+                    dmabuf->attributes.offset[0] != 0 ||
+		    dmabuf->attributes.flags)
 			return NULL;
 
 		bo = gbm_bo_import(b->gbm, GBM_BO_IMPORT_FD, &gbm_dmabuf,
-- 
2.11.0



More information about the wayland-devel mailing list