diff mbox series

[meta-multimedia] xdg-desktop-portal-wlr: Fix build with older mesa

Message ID 20230618174719.2896278-1-raj.khem@gmail.com
State New
Headers show
Series [meta-multimedia] xdg-desktop-portal-wlr: Fix build with older mesa | expand

Commit Message

Khem Raj June 18, 2023, 5:47 p.m. UTC
Some ports e.g. visionfive2 does not yet supported 21.1+ mesa
where gbm_bo_create_with_modifiers2 API is available, therefore
use gbm_bo_create_with_modifiers API for compatibility

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 ...screencast-Fix-build-with-older-mesa.patch | 53 +++++++++++++++++++
 .../xdg-desktop-portal-wlr_0.7.0.bb           |  3 +-
 2 files changed, 55 insertions(+), 1 deletion(-)
 create mode 100644 meta-multimedia/recipes-support/xdg-desktop-portal-wlr/xdg-desktop-portal-wlr/0001-screencast-Fix-build-with-older-mesa.patch
diff mbox series

Patch

diff --git a/meta-multimedia/recipes-support/xdg-desktop-portal-wlr/xdg-desktop-portal-wlr/0001-screencast-Fix-build-with-older-mesa.patch b/meta-multimedia/recipes-support/xdg-desktop-portal-wlr/xdg-desktop-portal-wlr/0001-screencast-Fix-build-with-older-mesa.patch
new file mode 100644
index 0000000000..ff4fcc292a
--- /dev/null
+++ b/meta-multimedia/recipes-support/xdg-desktop-portal-wlr/xdg-desktop-portal-wlr/0001-screencast-Fix-build-with-older-mesa.patch
@@ -0,0 +1,53 @@ 
+From ef60a76e2a21b7649632dcf71d125039604a56b5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 18 Jun 2023 10:42:19 -0700
+Subject: [PATCH] screencast: Fix build with older mesa
+
+gbm_bo_create_with_modifiers2() is quite new and there are still distros
+that ship 21.2 and older. e.g. powerVR mesa implementation
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/screencast/pipewire_screencast.c | 8 ++++++--
+ src/screencast/screencast_common.c   | 4 ++--
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/src/screencast/pipewire_screencast.c b/src/screencast/pipewire_screencast.c
+index 0611fd5..7d66810 100644
+--- a/src/screencast/pipewire_screencast.c
++++ b/src/screencast/pipewire_screencast.c
+@@ -234,9 +234,13 @@ static void pwr_handle_stream_param_changed(void *data, uint32_t id,
+ 			uint32_t n_params;
+ 			struct spa_pod_builder *builder[2] = {&b[0].b, &b[1].b};
+ 
+-			struct gbm_bo *bo = gbm_bo_create_with_modifiers2(cast->ctx->gbm,
++			struct gbm_bo *bo = gbm_bo_create_with_modifiers(cast->ctx->gbm,
+ 				cast->screencopy_frame_info[cast->buffer_type].width, cast->screencopy_frame_info[cast->buffer_type].height,
+-				cast->screencopy_frame_info[cast->buffer_type].format, modifiers, n_modifiers, flags);
++				cast->screencopy_frame_info[cast->buffer_type].format, modifiers, n_modifiers);
++			if(!bo)
++				bo = gbm_bo_create(cast->ctx->gbm,
++				cast->screencopy_frame_info[cast->buffer_type].width, cast->screencopy_frame_info[cast->buffer_type].height,
++				cast->screencopy_frame_info[cast->buffer_type].format, GBM_BO_USE_RENDERING);
+ 			if (bo) {
+ 				modifier = gbm_bo_get_modifier(bo);
+ 				gbm_bo_destroy(bo);
+diff --git a/src/screencast/screencast_common.c b/src/screencast/screencast_common.c
+index d6d13db..2e4fc18 100644
+--- a/src/screencast/screencast_common.c
++++ b/src/screencast/screencast_common.c
+@@ -143,8 +143,8 @@ struct xdpw_buffer *xdpw_buffer_create(struct xdpw_screencast_instance *cast,
+ 		uint32_t flags = GBM_BO_USE_RENDERING;
+ 		if (cast->pwr_format.modifier != DRM_FORMAT_MOD_INVALID) {
+ 			uint64_t *modifiers = (uint64_t*)&cast->pwr_format.modifier;
+-			buffer->bo = gbm_bo_create_with_modifiers2(cast->ctx->gbm, frame_info->width, frame_info->height,
+-				frame_info->format, modifiers, 1, flags);
++			buffer->bo = gbm_bo_create_with_modifiers(cast->ctx->gbm, frame_info->width, frame_info->height,
++				frame_info->format, modifiers, 1);
+ 		} else {
+ 			if (cast->ctx->state->config->screencast_conf.force_mod_linear) {
+ 				flags |= GBM_BO_USE_LINEAR;
+-- 
+2.41.0
+
diff --git a/meta-multimedia/recipes-support/xdg-desktop-portal-wlr/xdg-desktop-portal-wlr_0.7.0.bb b/meta-multimedia/recipes-support/xdg-desktop-portal-wlr/xdg-desktop-portal-wlr_0.7.0.bb
index cfc7109c0c..b845c5f792 100644
--- a/meta-multimedia/recipes-support/xdg-desktop-portal-wlr/xdg-desktop-portal-wlr_0.7.0.bb
+++ b/meta-multimedia/recipes-support/xdg-desktop-portal-wlr/xdg-desktop-portal-wlr_0.7.0.bb
@@ -16,7 +16,8 @@  DEPENDS = " \
 inherit meson pkgconfig features_check
 REQUIRED_DISTRO_FEATURES = "opengl wayland"
 
-SRC_URI = "git://github.com/emersion/xdg-desktop-portal-wlr.git;protocol=https;nobranch=1"
+SRC_URI = "git://github.com/emersion/xdg-desktop-portal-wlr.git;protocol=https;nobranch=1 \
+           file://0001-screencast-Fix-build-with-older-mesa.patch"
 
 S = "${WORKDIR}/git"
 SRCREV = "776113a4f014639c29d8de8fcb513493ef7b491f"