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

