From ceff4a5263bdebca3a58452b0a91470c20548124 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 18 Jun 2023 10:45:46 -0700 Subject: xdg-desktop-portal-wlr: Fix build with older mesa 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 --- ...0001-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 --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 +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 +--- + 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" -- cgit v1.2.3-54-g00ecf