From 9dc2e554e59026bb27009405c652e786a1c3aa1a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 16 Oct 2023 21:58:10 -0400 Subject: [PATCH 1/2] dmabuf: Tweak error messages --- gdk/gdkdmabuf.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/gdk/gdkdmabuf.c b/gdk/gdkdmabuf.c index de21b08d2b..d31eea3ca8 100644 --- a/gdk/gdkdmabuf.c +++ b/gdk/gdkdmabuf.c @@ -87,18 +87,29 @@ gdk_dmabuf_direct_downloader_supports (const GdkDmabufDownloader *downloader, info = get_drm_format_info (dmabuf->fourcc); - if (!info || dmabuf->modifier != DRM_FORMAT_MOD_LINEAR) + if (!info) { - g_set_error (error, GDK_DMABUF_ERROR, GDK_DMABUF_ERROR_UNSUPPORTED_FORMAT, - "Unsupported dmabuf format %.4s:%#lx", - (char *) &dmabuf->fourcc, dmabuf->modifier); + g_set_error (error, + GDK_DMABUF_ERROR, GDK_DMABUF_ERROR_UNSUPPORTED_FORMAT, + "Unsupported dmabuf format %.4s", + (char *) &dmabuf->fourcc); return FALSE; } + + if (dmabuf->modifier != DRM_FORMAT_MOD_LINEAR) + { + g_set_error (error, + GDK_DMABUF_ERROR, GDK_DMABUF_ERROR_UNSUPPORTED_FORMAT, + "Unsupported dmabuf modifier %#lx (only linear buffers are supported)", + dmabuf->modifier); + return FALSE; + } + if (dmabuf->n_planes > 1) { - g_set_error (error, GDK_DMABUF_ERROR, GDK_DMABUF_ERROR_CREATION_FAILED, - "Cannot create multiplanar textures for dmabuf format %.4s:%#lx", - (char *) &dmabuf->fourcc, dmabuf->modifier); + g_set_error_literal (error, + GDK_DMABUF_ERROR, GDK_DMABUF_ERROR_CREATION_FAILED, + "Multiplanar dmabufs are not supported"); return FALSE; } From 441750951573a5fef64da36e13af372d0118195a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 16 Oct 2023 22:18:59 -0400 Subject: [PATCH 2/2] dmabuf: Add a display getter Add private api to get the display of a dmabuf texture. We will need it in the following commit. --- gdk/gdkdmabuftexture.c | 6 ++++++ gdk/gdkdmabuftextureprivate.h | 1 + 2 files changed, 7 insertions(+) diff --git a/gdk/gdkdmabuftexture.c b/gdk/gdkdmabuftexture.c index bde7918c35..82fae1cc01 100644 --- a/gdk/gdkdmabuftexture.c +++ b/gdk/gdkdmabuftexture.c @@ -110,6 +110,12 @@ gdk_dmabuf_texture_class_init (GdkDmabufTextureClass *klass) gobject_class->dispose = gdk_dmabuf_texture_dispose; } +GdkDisplay * +gdk_dmabuf_texture_get_display (GdkDmabufTexture *self) +{ + return self->display; +} + const GdkDmabuf * gdk_dmabuf_texture_get_dmabuf (GdkDmabufTexture *self) { diff --git a/gdk/gdkdmabuftextureprivate.h b/gdk/gdkdmabuftextureprivate.h index bec9a21fbc..fb6ebc9916 100644 --- a/gdk/gdkdmabuftextureprivate.h +++ b/gdk/gdkdmabuftextureprivate.h @@ -14,6 +14,7 @@ GdkTexture * gdk_dmabuf_texture_new_from_builder (GdkDmabufTextureBui gpointer data, GError **error); +GdkDisplay * gdk_dmabuf_texture_get_display (GdkDmabufTexture *self); const GdkDmabuf * gdk_dmabuf_texture_get_dmabuf (GdkDmabufTexture *self); G_END_DECLS