From de8fcc7e227de0caea0d7b7de593c73c143e0173 Mon Sep 17 00:00:00 2001 From: JustKidding Date: Thu, 5 May 2022 22:44:00 -0500 Subject: upgpkg: ungoogled-chromium 101.0.4951.54-2 add va-api patch for wayland --- .SRCINFO | 4 +- PKGBUILD | 7 +- ozone-add-va-api-support-to-wayland.patch | 156 ++++++++++++++++++++++++++++++ 3 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 ozone-add-va-api-support-to-wayland.patch diff --git a/.SRCINFO b/.SRCINFO index 4f5e280..2976774 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = ungoogled-chromium pkgdesc = A lightweight approach to removing Google web service dependency pkgver = 101.0.4951.54 - pkgrel = 1 + pkgrel = 2 url = https://github.com/Eloston/ungoogled-chromium arch = x86_64 license = BSD @@ -61,6 +61,7 @@ pkgbase = ungoogled-chromium source = use-oauth2-client-switches-as-default.patch source = ungoogled-chromium-101.0.4951.54-1.tar.gz::https://github.com/Eloston/ungoogled-chromium/archive/101.0.4951.54-1.tar.gz source = chromium-drirc-disable-10bpc-color-configs.conf + source = ozone-add-va-api-support-to-wayland.patch source = wayland-egl.patch sha256sums = c26cc6fd453d9a42a6b5e46fa4f3ee62ed368bb78101512b6816bc5d8f4200b5 sha256sums = 213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a @@ -71,6 +72,7 @@ pkgbase = ungoogled-chromium sha256sums = e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711 sha256sums = 8c5da085191a8586bf52ff3bbd0548f1af0fe1792c5db8530d4b158df83a092b sha256sums = babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb + sha256sums = 07bdc1b3fc8f0d0a4804d111c46ce3343cd7824de562f2848d429b917ce4bcfd sha256sums = 34d08ea93cb4762cb33c7cffe931358008af32265fc720f2762f0179c3973574 pkgname = ungoogled-chromium diff --git a/PKGBUILD b/PKGBUILD index 893c5ab..8e350df 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -10,7 +10,7 @@ pkgname=ungoogled-chromium pkgver=101.0.4951.54 -pkgrel=1 +pkgrel=2 _launcher_ver=8 _gcc_patchset=4 pkgdesc="A lightweight approach to removing Google web service dependency" @@ -48,10 +48,12 @@ _uc_ver=$pkgver-1 source=(${source[@]} $pkgname-$_uc_ver.tar.gz::https://github.com/$_uc_usr/ungoogled-chromium/archive/$_uc_ver.tar.gz chromium-drirc-disable-10bpc-color-configs.conf + ozone-add-va-api-support-to-wayland.patch wayland-egl.patch) sha256sums=(${sha256sums[@]} '8c5da085191a8586bf52ff3bbd0548f1af0fe1792c5db8530d4b158df83a092b' 'babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb' + '07bdc1b3fc8f0d0a4804d111c46ce3343cd7824de562f2848d429b917ce4bcfd' '34d08ea93cb4762cb33c7cffe931358008af32265fc720f2762f0179c3973574') # Possible replacements are listed in build/linux/unbundle/replace_gn_files.py @@ -117,6 +119,9 @@ prepare() { # Wayland/EGL regression (crbug #1071528 #1071550) patch -Np1 -i ../wayland-egl.patch + # Enable vaapi on wayland + patch -Np1 -i ../ozone-add-va-api-support-to-wayland.patch + # Ungoogled Chromium changes _ungoogled_repo="$srcdir/$pkgname-$_uc_ver" _utils="${_ungoogled_repo}/utils" diff --git a/ozone-add-va-api-support-to-wayland.patch b/ozone-add-va-api-support-to-wayland.patch new file mode 100644 index 0000000..e2e055c --- /dev/null +++ b/ozone-add-va-api-support-to-wayland.patch @@ -0,0 +1,156 @@ +From ddb186d8904d6ec80d1084a1cc495b824381a565 Mon Sep 17 00:00:00 2001 +From: Maksim Sisov +Date: Wed, 20 Jan 2021 09:50:22 +0200 +Subject: [PATCH] ozone/wayland: add VA-API support. + +This patch ads VA-API support utilizing old VA-API path used for +ChromeOS, which can be buggy on some devices (currently tested +on Intel Gen8 and Gen9 with Gen8 having some minor bugs). + +It's known that a new VA-API is being developed atm and once it's ready, +we will switch to a new path, which should be more stable. + +Upstream-Status: Inappropriate + +The patch is based on the old va-api path. ChromeOS +team is working on the new path, which will be also employed +by Wayland later. + +Signed-off-by: Maksim Sisov +--- + media/gpu/vaapi/vaapi_picture_factory.cc | 2 +- + media/gpu/vaapi/vaapi_picture_native_pixmap.cc | 17 ++++++++++++++++- + .../gpu/vaapi/vaapi_video_decode_accelerator.cc | 4 ++-- + .../platform/wayland/gpu/gbm_pixmap_wayland.cc | 14 ++++++++++++-- + .../platform/wayland/gpu/gbm_pixmap_wayland.h | 3 +++ + .../platform/wayland/ozone_platform_wayland.cc | 3 +++ + 6 files changed, 37 insertions(+), 6 deletions(-) + +diff --git a/media/gpu/vaapi/vaapi_picture_factory.cc b/media/gpu/vaapi/vaapi_picture_factory.cc +index 62e3a429239eb..df4905a10f68b 100644 +--- a/media/gpu/vaapi/vaapi_picture_factory.cc ++++ b/media/gpu/vaapi/vaapi_picture_factory.cc +@@ -105,7 +105,7 @@ uint32_t VaapiPictureFactory::GetGLTextureTarget() { + } + + gfx::BufferFormat VaapiPictureFactory::GetBufferFormat() { +-#if BUILDFLAG(USE_VAAPI_X11) ++#if defined(OS_LINUX) + return gfx::BufferFormat::RGBX_8888; + #else + return gfx::BufferFormat::YUV_420_BIPLANAR; +diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap.cc +index 941f24cc59590..a9c80356e7109 100644 +--- a/media/gpu/vaapi/vaapi_picture_native_pixmap.cc ++++ b/media/gpu/vaapi/vaapi_picture_native_pixmap.cc +@@ -4,6 +4,7 @@ + + #include "media/gpu/vaapi/vaapi_picture_native_pixmap.h" + ++#include "media/gpu/macros.h" + #include "media/gpu/vaapi/va_surface.h" + #include "media/gpu/vaapi/vaapi_wrapper.h" + #include "ui/gfx/buffer_format_util.h" +@@ -40,7 +41,21 @@ VaapiPictureNativePixmap::~VaapiPictureNativePixmap() = default; + bool VaapiPictureNativePixmap::DownloadFromSurface( + scoped_refptr va_surface) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +- return vaapi_wrapper_->BlitSurface(*va_surface, *va_surface_); ++ if (!vaapi_wrapper_->SyncSurface(va_surface->id())) { ++ VLOGF(1) << "Cannot sync VPP input surface"; ++ return false; ++ } ++ if (!vaapi_wrapper_->BlitSurface(*va_surface, *va_surface_)) { ++ VLOGF(1) << "Cannot convert decoded image into output buffer"; ++ return false; ++ } ++ ++ // Sync target surface since the buffer is returning to client. ++ if (!vaapi_wrapper_->SyncSurface(va_surface_->id())) { ++ VLOGF(1) << "Cannot sync VPP output surface"; ++ return false; ++ } ++ return true; + } + + bool VaapiPictureNativePixmap::AllowOverlay() const { +diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc +index baaf2ae468d36..4d6933d869933 100644 +--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc ++++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc +@@ -562,12 +562,12 @@ void VaapiVideoDecodeAccelerator::InitiateSurfaceSetChange( + requested_visible_rect_ = visible_rect; + if (buffer_allocation_mode_ == BufferAllocationMode::kSuperReduced) { + // Add one to the reference frames for the one being currently egressed. +- requested_num_reference_frames_ = num_reference_frames + 1; ++ requested_num_reference_frames_ = num_reference_frames + 4; + requested_num_pics_ = num_pics - num_reference_frames; + } else if (buffer_allocation_mode_ == BufferAllocationMode::kReduced) { + // Add one to the reference frames for the one being currently egressed, + // and an extra allocation for both |client_| and |decoder_|. +- requested_num_reference_frames_ = num_reference_frames + 2; ++ requested_num_reference_frames_ = num_reference_frames + 5; + requested_num_pics_ = num_pics - num_reference_frames + 1; + } else { + requested_num_reference_frames_ = 0; +diff --git a/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc b/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc +index 2ec4e4e01729e..e73af1fe781c6 100644 +--- a/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc ++++ b/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc +@@ -33,8 +33,12 @@ GbmPixmapWayland::GbmPixmapWayland(WaylandBufferManagerGpu* buffer_manager) + buffer_id_(buffer_manager->AllocateBufferID()) {} + + GbmPixmapWayland::~GbmPixmapWayland() { +- if (gbm_bo_ && widget_ != gfx::kNullAcceleratedWidget) ++ // gfx::BufferUsage::SCANOUT_VDA_WRITE doesn't result in creation of ++ // wl_buffers. ++ if (gbm_bo_ && usage_ != gfx::BufferUsage::SCANOUT_VDA_WRITE && ++ widget_ != gfx::kNullAcceleratedWidget) { + buffer_manager_->DestroyBuffer(buffer_id_); ++ } + } + + bool GbmPixmapWayland::InitializeBuffer( +@@ -83,8 +87,14 @@ bool GbmPixmapWayland::InitializeBuffer( + << " usage=" << gfx::BufferUsageToString(usage); + + visible_area_size_ = visible_area_size ? visible_area_size.value() : size; +- if (widget_ != gfx::kNullAcceleratedWidget) ++ usage_ = usage; ++ // Do not create wl_buffers for SCANOUT_VDA_WRITE usages. These buffers are ++ // only used by video decoders and are not going to be requested to be ++ // attached to Wayland surfaces. ++ if (usage_ != gfx::BufferUsage::SCANOUT_VDA_WRITE && ++ widget_ != gfx::kNullAcceleratedWidget) { + CreateDmabufBasedBuffer(); ++ } + return true; + } + +diff --git a/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.h b/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.h +index e9b25a7452882..3eb91765eba30 100644 +--- a/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.h ++++ b/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.h +@@ -87,6 +87,9 @@ class GbmPixmapWayland : public gfx::NativePixmap { + + // Size of the visible area of the buffer. + gfx::Size visible_area_size_; ++ ++ // Tells the usage of this pixmap. ++ gfx::BufferUsage usage_ = gfx::BufferUsage::SCANOUT; + }; + + } // namespace ui +diff --git a/ui/ozone/platform/wayland/ozone_platform_wayland.cc b/ui/ozone/platform/wayland/ozone_platform_wayland.cc +index 661859754cd80..665e6de2616bb 100644 +--- a/ui/ozone/platform/wayland/ozone_platform_wayland.cc ++++ b/ui/ozone/platform/wayland/ozone_platform_wayland.cc +@@ -289,6 +289,9 @@ class OzonePlatformWayland : public OzonePlatform, + // arbitrary position. + properties->supports_global_screen_coordinates = false; + ++ // Let the media know this platform supports va-api. ++ properties->supports_vaapi = true; ++ + initialised = true; + } -- cgit v1.2.3