diff --git a/9d5844679af8f84036f1b800307e799bd7ab73ba.patch b/9d5844679af8f84036f1b800307e799bd7ab73ba.patch new file mode 100644 index 0000000..b919fcd --- /dev/null +++ b/9d5844679af8f84036f1b800307e799bd7ab73ba.patch @@ -0,0 +1,59 @@ +From 9d5844679af8f84036f1b800307e799bd7ab73ba Mon Sep 17 00:00:00 2001 +From: Philippe Normand +Date: Thu, 20 Jun 2024 12:39:27 -0700 +Subject: [PATCH] [GTK][GStreamer] VA+DMABuf videos flicker + https://bugs.webkit.org/show_bug.cgi?id=253807 + +Reviewed by Xabier Rodriguez-Calvar. + +By requesting a video frame allocation pool containing at least 3 frames, the risks of flickering +when rendering should be reduced. + +* Source/WebCore/platform/graphics/gstreamer/GStreamerVideoSinkCommon.cpp: +(WebKitVideoSinkProbe::doProbe): + +Canonical link: https://commits.webkit.org/280210@main +--- + .../gstreamer/GStreamerVideoSinkCommon.cpp | 29 +++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) + +diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerVideoSinkCommon.cpp b/Source/WebCore/platform/graphics/gstreamer/GStreamerVideoSinkCommon.cpp +index dc3f912e11d8..b2ddaad303e8 100644 +--- a/Source/WebCore/platform/graphics/gstreamer/GStreamerVideoSinkCommon.cpp ++++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerVideoSinkCommon.cpp +@@ -73,8 +73,33 @@ class WebKitVideoSinkProbe { + player->updateVideoOrientation(tagList); + } + +- if (info->type & GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM && GST_QUERY_TYPE(GST_PAD_PROBE_INFO_QUERY(info)) == GST_QUERY_ALLOCATION) +- gst_query_add_allocation_meta(GST_PAD_PROBE_INFO_QUERY(info), GST_VIDEO_META_API_TYPE, nullptr); ++ if (info->type & GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM && GST_QUERY_TYPE(GST_PAD_PROBE_INFO_QUERY(info)) == GST_QUERY_ALLOCATION) { ++ auto query = GST_PAD_PROBE_INFO_QUERY(info); ++ gst_query_add_allocation_meta(query, GST_VIDEO_META_API_TYPE, nullptr); ++ ++ GstCaps* caps; ++ gboolean needPool; ++ gst_query_parse_allocation(query, &caps, &needPool); ++ if (UNLIKELY(!caps) || !needPool) ++ return GST_PAD_PROBE_OK; ++ ++ unsigned size; ++#if GST_CHECK_VERSION(1, 24, 0) ++ if (gst_video_is_dma_drm_caps(caps)) { ++ GstVideoInfoDmaDrm drmInfo; ++ if (!gst_video_info_dma_drm_from_caps(&drmInfo, caps)) ++ return GST_PAD_PROBE_OK; ++ size = GST_VIDEO_INFO_SIZE(&drmInfo.vinfo); ++ } else ++#endif ++ { ++ GstVideoInfo info; ++ if (!gst_video_info_from_caps(&info, caps)) ++ return GST_PAD_PROBE_OK; ++ size = GST_VIDEO_INFO_SIZE(&info); ++ } ++ gst_query_add_allocation_pool(query, nullptr, size, 3, 0); ++ } + + #if USE(GSTREAMER_GL) + // FIXME: Verify the following comment. Investigate what actually should be done here. diff --git a/webkit2gtk3.changes b/webkit2gtk3.changes index d6f6a79..be381ac 100644 --- a/webkit2gtk3.changes +++ b/webkit2gtk3.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Jul 2 21:39:04 UTC 2024 - Bjørn Lie + +- Add 9d5844679af8f84036f1b800307e799bd7ab73ba.patch VA+DMABuf + videos flicker + ------------------------------------------------------------------- Fri May 17 20:40:00 UTC 2024 - Michael Gorse diff --git a/webkit2gtk3.spec b/webkit2gtk3.spec index 9ca2b2c..e9e1443 100644 --- a/webkit2gtk3.spec +++ b/webkit2gtk3.spec @@ -91,6 +91,8 @@ Source99: webkit2gtk3.keyring Patch0: reproducibility.patch # PATCH-FIX-UPSTREAM webkit2gtk3-disable-dmabuf-nvidia.patch boo#1216778 mgorse@suse.com -- disable the DMABuf renderer for NVIDIA proprietary drivers. Patch2: webkit2gtk3-disable-dmabuf-nvidia.patch +# PATCH-FIX-UPSTREAM 9d5844679af8f84036f1b800307e799bd7ab73ba -- VA+DMABuf videos flicker +Patch3: https://github.com/WebKit/WebKit/commit/9d5844679af8f84036f1b800307e799bd7ab73ba.patch BuildRequires: Mesa-libEGL-devel BuildRequires: Mesa-libGL-devel