mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-01-12 03:24:08 +00:00
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 <raj.khem@gmail.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user