| 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 |
| |