egl/wayland: Ignore invalid modifiers
authorDaniel Stone <daniels@collabora.com>
Fri, 21 Jul 2017 11:05:17 +0000 (12:05 +0100)
committerDaniel Stone <daniels@collabora.com>
Mon, 24 Jul 2017 15:42:28 +0000 (16:42 +0100)
If the underlying driver does not support modifiers, dmabuf will still
advertise formats through the 'modifier' event, but send them with an
invalid modifier. Ignore them if this is the case, rather than passing
them through to the driver.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Fixes: 02cc35937277 ("egl/wayland: Use linux-dmabuf interface for buffers")
src/egl/drivers/dri2/platform_wayland.c

index f4c09ac0bc10c6885f3d9447cb9352ab8725da54..ff35507d255c4f1e9f5bb64dff4f497e29c110ad 100644 (file)
@@ -1083,6 +1083,10 @@ dmabuf_handle_modifier(void *data, struct zwp_linux_dmabuf_v1 *dmabuf,
    struct dri2_egl_display *dri2_dpy = data;
    uint64_t *mod = NULL;
 
+   if (modifier_hi == (DRM_FORMAT_MOD_INVALID >> 32) &&
+       modifier_lo == (DRM_FORMAT_MOD_INVALID & 0xffffffff))
+      return;
+
    switch (format) {
    case WL_DRM_FORMAT_ARGB8888:
       mod = u_vector_add(&dri2_dpy->wl_modifiers.argb8888);