summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustKidding <jk@vin.ovh>2022-05-05 22:44:00 -0500
committerJustKidding <jk@vin.ovh>2022-05-05 22:44:00 -0500
commitde8fcc7e227de0caea0d7b7de593c73c143e0173 (patch)
tree06a813265543157a89f9172c7ecdebee95a9b15e
parent57fc2958233403f4a815e03b3a3d434dd3b2dd65 (diff)
downloadungoogled-chromium-de8fcc7e227de0caea0d7b7de593c73c143e0173.tar.gz
ungoogled-chromium-de8fcc7e227de0caea0d7b7de593c73c143e0173.tar.bz2
ungoogled-chromium-de8fcc7e227de0caea0d7b7de593c73c143e0173.zip
upgpkg: ungoogled-chromium 101.0.4951.54-2
add va-api patch for wayland
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD7
-rw-r--r--ozone-add-va-api-support-to-wayland.patch156
3 files changed, 165 insertions, 2 deletions
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 <msisov@igalia.com>
+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 <msisov@igalia.com>
+---
+ 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<VASurface> 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;
+ }