Hello community,

here is the log from the commit of package chromium for openSUSE:Leap:15.2 
checked in at 2020-04-17 13:37:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/chromium (Old)
 and      /work/SRC/openSUSE:Leap:15.2/.chromium.new.2738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "chromium"

Fri Apr 17 13:37:38 2020 rev:103 rq:794006 version:81.0.4044.92

Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/chromium/chromium.changes      2020-03-23 
07:14:41.318527185 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.chromium.new.2738/chromium.changes    
2020-04-17 13:37:53.148235336 +0200
@@ -1,0 +2,85 @@
+Wed Apr  8 08:41:17 UTC 2020 - Tomáš Chvátal <tchva...@suse.com>
+
+- Update to 81.0.4044.92 bsc#1168911:
+  * CVE-2020-6454: Use after free in extensions
+  * CVE-2020-6423: Use after free in audio
+  * CVE-2020-6455: Out of bounds read in WebSQL
+  * CVE-2020-6430: Type Confusion in V8
+  * CVE-2020-6456: Insufficient validation of untrusted input in clipboard
+  * CVE-2020-6431: Insufficient policy enforcement in full screen
+  * CVE-2020-6432: Insufficient policy enforcement in navigations
+  * CVE-2020-6433: Insufficient policy enforcement in extensions
+  * CVE-2020-6434: Use after free in devtools
+  * CVE-2020-6435: Insufficient policy enforcement in extensions
+  * CVE-2020-6436: Use after free in window management
+  * CVE-2020-6437: Inappropriate implementation in WebView
+  * CVE-2020-6438: Insufficient policy enforcement in extensions
+  * CVE-2020-6439: Insufficient policy enforcement in navigations
+  * CVE-2020-6440: Inappropriate implementation in extensions
+  * CVE-2020-6441: Insufficient policy enforcement in omnibox
+  * CVE-2020-6442: Inappropriate implementation in cache
+  * CVE-2020-6443: Insufficient data validation in developer tools
+  * CVE-2020-6444: Uninitialized Use in WebRTC
+  * CVE-2020-6445: Insufficient policy enforcement in trusted types
+  * CVE-2020-6446: Insufficient policy enforcement in trusted types
+  * CVE-2020-6447: Inappropriate implementation in developer tools
+  * CVE-2020-6448: Use after free in V8
+- Add new patches:
+  * chromium-81-gcc-constexpr.patch
+  * chromium-81-gcc-noexcept.patch
+  * fix-vaapi-with-glx.patch
+- Remove no longer needed patches:
+  * chromium-80-gcc-abstract.patch
+  * chromium-80-gcc-incomplete-type.patch
+  * chromium-80-gcc-permissive.patch
+  * chromium-80-include.patch
+  * chromium-80-unbundle-libxml.patch
+  * chromium-missing-cstddef-header.patch
+  * chromium-missing-cstdint-header.patch
+  * chromium-missing-cstring-header.patch
+  * chromium-missing-cstring-header2.patch
+  * chromium-system-icu.patch
+  * chromium-unbundle-zlib.patch
+  * webrtc-pulse.patch
+- Rebase patches:
+  * build-with-pipewire-0.3.patch
+  * chromium-vaapi-fix.patch
+  * chromium-vaapi.patch
+  * gpu-timeout.patch
+  * old-libva.patch
+
+-------------------------------------------------------------------
+Thu Apr  2 09:21:02 UTC 2020 - Tomáš Chvátal <tchva...@suse.com>
+
+- Update to 80.0.3987.162 bsc#1168421:
+  * CVE-2020-6450: Use after free in WebAudio.
+  * CVE-2020-6451: Use after free in WebAudio.
+  * CVE-2020-6452: Heap buffer overflow in media.
+
+-------------------------------------------------------------------
+Sun Mar 29 08:29:41 UTC 2020 - Martin Liška <mli...@suse.cz>
+
+- Rebase build-with-pipewire-0.3.patch in order to fix
+  patch collision.
+
+-------------------------------------------------------------------
+Sat Mar 28 18:41:02 UTC 2020 - Martin Liška <mli...@suse.cz>
+
+- Add chromium-missing-cstdint-header.patch,
+  chromium-missing-cstring-header.patch,
+  chromium-missing-cstring-header2.patch and
+  chromium-missing-cstddef-header.patch in order to fix boo#1167465.
+
+-------------------------------------------------------------------
+Fri Mar 27 11:48:36 UTC 2020 - Stasiek Michalski <stas...@michalski.cc>
+
+- Use a symbolic icon for GNOME
+
+-------------------------------------------------------------------
+Mon Mar 23 16:49:16 UTC 2020 - Antonio Larrosa <alarr...@suse.com>
+
+- Add patch to allow building with pipewire 0.3:
+  * build-with-pipewire-0.3.patch
+- Use pipewire in Leap 15.2
+
+-------------------------------------------------------------------
@@ -4 +89 @@
-- Update to 80.0.3987.149 (bsc#1167090):
+- Update to 80.0.3987.149:

Old:
----
  chromium-80-gcc-abstract.patch
  chromium-80-gcc-incomplete-type.patch
  chromium-80-gcc-permissive.patch
  chromium-80-include.patch
  chromium-80-unbundle-libxml.patch
  chromium-80.0.3987.149.tar.xz
  chromium-system-icu.patch
  chromium-unbundle-zlib.patch
  webrtc-pulse.patch

New:
----
  build-with-pipewire-0.3.patch
  chromium-81-gcc-constexpr.patch
  chromium-81-gcc-noexcept.patch
  chromium-81.0.4044.92.tar.xz
  chromium-symbolic.svg
  fix-vaapi-with-glx.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ chromium.spec ++++++
--- /var/tmp/diff_new_pack.TSX4yf/_old  2020-04-17 13:38:02.296242219 +0200
+++ /var/tmp/diff_new_pack.TSX4yf/_new  2020-04-17 13:38:02.300242222 +0200
@@ -57,7 +57,7 @@
 %bcond_with clang
 %bcond_with wayland
 Name:           chromium
-Version:        80.0.3987.149
+Version:        81.0.4044.92
 Release:        0
 Summary:        Google's open source browser project
 License:        BSD-3-Clause AND LGPL-2.1-or-later
@@ -69,6 +69,7 @@
 Source101:      chromium-browser.desktop
 Source102:      chromium-browser.xml
 Source103:      chromium.default
+Source104:      chromium-symbolic.svg
 Patch0:         chromium-libusb_interrupt_event_handler.patch
 # PATCH-FIX-OPENSUSE Make the 1-click-install ymp file always download 
[bnc#836059]
 Patch1:         exclude_ymp.patch
@@ -79,22 +80,18 @@
 Patch4:         chromium-dma-buf.patch
 Patch5:         chromium-buildname.patch
 Patch6:         chromium-drm.patch
-Patch8:         chromium-system-icu.patch
 Patch9:         chromium-system-libusb.patch
 Patch10:        gcc-enable-lto.patch
-Patch11:        chromium-unbundle-zlib.patch
-Patch12:        chromium-old-glibc-noexcept.patch
-Patch13:        chromium-79-gcc-alignas.patch
-Patch14:        chromium-80-gcc-abstract.patch
-Patch15:        chromium-80-gcc-blink.patch
-Patch16:        chromium-80-gcc-incomplete-type.patch
-Patch17:        chromium-80-gcc-permissive.patch
-Patch18:        chromium-80-gcc-quiche.patch
-Patch19:        chromium-80-include.patch
-Patch20:        chromium-80-unbundle-libxml.patch
-Patch21:        chromium-fix-char_traits.patch
-Patch22:        gpu-timeout.patch
-Patch23:        webrtc-pulse.patch
+Patch11:        chromium-old-glibc-noexcept.patch
+Patch12:        chromium-79-gcc-alignas.patch
+Patch13:        chromium-80-gcc-blink.patch
+Patch14:        chromium-80-gcc-quiche.patch
+Patch15:        chromium-fix-char_traits.patch
+Patch16:        gpu-timeout.patch
+Patch17:        chromium-81-gcc-constexpr.patch
+Patch18:        chromium-81-gcc-noexcept.patch
+Patch19:        build-with-pipewire-0.3.patch
+Patch20:        fix-vaapi-with-glx.patch
 # Google seem not too keen on merging this but GPU accel is quite important
 #  https://chromium-review.googlesource.com/c/chromium/src/+/532294
 #  
https://github.com/saiarcot895/chromium-ubuntu-build/tree/master/debian/patches
@@ -147,6 +144,7 @@
 BuildRequires:  pkgconfig(expat)
 BuildRequires:  pkgconfig(flac++)
 BuildRequires:  pkgconfig(freetype2)
+BuildRequires:  pkgconfig(gbm)
 BuildRequires:  pkgconfig(glib-2.0)
 BuildRequires:  pkgconfig(gtk+-2.0)
 BuildRequires:  pkgconfig(gtk+-3.0)
@@ -187,6 +185,7 @@
 BuildRequires:  pkgconfig(vdpau)
 BuildRequires:  pkgconfig(vorbis)
 BuildRequires:  pkgconfig(x11)
+BuildRequires:  pkgconfig(xcb-dri3)
 BuildRequires:  pkgconfig(xcomposite)
 BuildRequires:  pkgconfig(xcursor)
 BuildRequires:  pkgconfig(xdamage)
@@ -220,10 +219,9 @@
 # no 32bit supported and it takes ages to build
 ExcludeArch:    %{ix86} %{arm} ppc ppc64 ppc64le s390 s390x
 %if %{with pipewire}
-BuildRequires:  pkgconfig(libpipewire-0.2)
+BuildRequires:  pkgconfig(libpipewire-0.3)
 %endif
 %if %{with wayland}
-BuildRequires:  pkgconfig(gbm)
 BuildRequires:  pkgconfig(wayland-client)
 BuildRequires:  pkgconfig(wayland-cursor)
 BuildRequires:  pkgconfig(wayland-scanner)
@@ -280,11 +278,6 @@
 %setup -q -n %{rname}-%{version}
 %autopatch -p1
 
-# unpatch the system zlib on old systems
-%if %{with sle_bundles}
-%patch11 -p1 -R
-%endif
-
 # Fix the path to nodejs binary
 mkdir -p third_party/node/linux/node-linux-x64/bin
 ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node
@@ -318,6 +311,7 @@
     third_party/angle/src/third_party/compiler
     third_party/angle/src/third_party/libXNVCtrl
     third_party/angle/src/third_party/trace_event
+    third_party/angle/src/third_party/volk
     third_party/angle/third_party/glslang
     third_party/angle/third_party/spirv-headers
     third_party/angle/third_party/spirv-tools
@@ -362,6 +356,8 @@
     third_party/depot_tools/third_party/six
     third_party/devscripts
     third_party/devtools-frontend
+    third_party/devtools-frontend/src/front_end/third_party/fabricjs
+    third_party/devtools-frontend/src/front_end/third_party/wasmparser
     third_party/devtools-frontend/src/third_party
     third_party/dom_distiller_js
     third_party/emoji-segmenter
@@ -432,7 +428,6 @@
     third_party/qcms
     third_party/rnnoise
     third_party/s2cellid
-    third_party/sfntly
     third_party/simplejson
     third_party/skia
     third_party/skia/third_party/skcms
@@ -453,8 +448,6 @@
     third_party/unrar
     third_party/usrsctp
     third_party/vulkan
-    third_party/wayland
-    third_party/wayland-protocols
     third_party/web-animations-js
     third_party/webdriver
     third_party/webrtc
@@ -477,6 +470,13 @@
     v8/third_party/inspector_protocol
     v8/third_party/v8/builtins
 )
+%if %{with wayland}
+keeplibs+=(
+    third_party/mingbm
+    third_party/wayland
+    third_party/wayland-protocols
+)
+%endif
 %if %{with sle_bundles}
 keeplibs+=(
     third_party/libwebp
@@ -641,6 +641,7 @@
 myconf_gn+=" treat_warnings_as_errors=false"
 myconf_gn+=" enable_widevine=true"
 myconf_gn+=" use_dbus=true"
+myconf_gn+=" use_system_minigbm=true"
 # See dependency logic in third_party/BUILD.gn
 %if %{with system_harfbuzz}
 myconf_gn+=" use_system_harfbuzz=true"
@@ -651,10 +652,11 @@
 myconf_gn+=" enable_hevc_demuxing=true"
 %if %{with pipewire}
 myconf_gn+=" rtc_use_pipewire=true rtc_link_pipewire=true"
+myconf_gn+=" rtc_use_pipewire_version=\"0.3\""
 %endif
 # ozone stuff
 %if %{with wayland}
-myconf_gn+=" use_ozone=true use_xkbcommon=true use_system_minigbm=true 
use_v4lplugin=true use_v4l2_codec=true use_linux_v4l2_only=true"
+myconf_gn+=" use_ozone=true use_xkbcommon=true use_v4lplugin=true 
use_v4l2_codec=true use_linux_v4l2_only=true"
 %endif
 %if %{with clang}
 myconf_gn+=" is_clang=true clang_base_path=\"/usr\" 
clang_use_chrome_plugins=false"
@@ -757,16 +759,12 @@
 cp -a chrome %{buildroot}%{_libdir}/chromium/chromium
 popd
 
-mkdir -p %{buildroot}%{_datadir}/icons/hicolor/256x256/apps
-cp -a chrome/app/theme/chromium/product_logo_256.png 
%{buildroot}%{_datadir}/icons/hicolor/256x256/apps/chromium-browser.png
-mkdir -p %{buildroot}%{_datadir}/icons/hicolor/128x128/apps
-cp -a chrome/app/theme/chromium/product_logo_128.png 
%{buildroot}%{_datadir}/icons/hicolor/128x128/apps/chromium-browser.png
-mkdir -p %{buildroot}%{_datadir}/icons/hicolor/64x64/apps
-cp -a chrome/app/theme/chromium/product_logo_64.png 
%{buildroot}%{_datadir}/icons/hicolor/64x64/apps/chromium-browser.png
-mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
-cp -a chrome/app/theme/chromium/product_logo_48.png 
%{buildroot}%{_datadir}/icons/hicolor/48x48/apps/chromium-browser.png
-mkdir -p %{buildroot}%{_datadir}/icons/hicolor/24x24/apps
-cp -a chrome/app/theme/chromium/product_logo_24.png 
%{buildroot}%{_datadir}/icons/hicolor/24x24/apps/chromium-browser.png
+install -Dm 0644 chrome/app/theme/chromium/product_logo_256.png 
%{buildroot}%{_datadir}/icons/hicolor/256x256/apps/chromium-browser.png    
+install -Dm 0644 chrome/app/theme/chromium/product_logo_128.png 
%{buildroot}%{_datadir}/icons/hicolor/128x128/apps/chromium-browser.png    
+install -Dm 0644 chrome/app/theme/chromium/product_logo_64.png 
%{buildroot}%{_datadir}/icons/hicolor/64x64/apps/chromium-browser.png    
+install -Dm 0644 chrome/app/theme/chromium/product_logo_48.png 
%{buildroot}%{_datadir}/icons/hicolor/48x48/apps/chromium-browser.png    
+install -Dm 0644 chrome/app/theme/chromium/product_logo_24.png 
%{buildroot}%{_datadir}/icons/hicolor/24x24/apps/chromium-browser.png    
+install -Dm 0644 %{SOURCE104} 
%{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/chromium-browser-symbolic.svg
 
 mkdir -p %{buildroot}%{_datadir}/applications/
 desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE101}

++++++ build-with-pipewire-0.3.patch ++++++
Index: chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/BUILD.gn
===================================================================
--- 
chromium-81.0.4044.83.orig/third_party/webrtc/modules/desktop_capture/BUILD.gn
+++ chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/BUILD.gn
@@ -196,7 +196,7 @@ if (is_linux) {
 
     if (rtc_link_pipewire) {
       pkg_config("pipewire") {
-        packages = [ "libpipewire-0.2" ]
+        packages = [ "libpipewire-${rtc_use_pipewire_version}" ]
       }
     } else {
       # When libpipewire is not directly linked, use stubs to allow for 
dlopening of
Index: 
chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
===================================================================
--- 
chromium-81.0.4044.83.orig/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
+++ 
chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
@@ -14,8 +14,13 @@
 #include <glib-object.h>
 #include <spa/param/format-utils.h>
 #include <spa/param/props.h>
+#if PW_CHECK_VERSION(0, 2, 90)
+#include <spa/utils/result.h>
+#include <spa/utils/defs.h>
+#else
 #include <spa/param/video/raw-utils.h>
 #include <spa/support/type-map.h>
+#endif
 
 #include <memory>
 #include <utility>
@@ -51,6 +56,21 @@ const char kPipeWireLib[] = "libpipewire
 #endif
 
 // static
+#if PW_CHECK_VERSION(0, 2, 90)
+void BaseCapturerPipeWire::OnCoreError(void* data,
+                          uint32_t id,
+                          int seq,
+                          int res,
+                          const char *message) {
+  BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
+  RTC_DCHECK(that);
+
+  RTC_LOG(LS_WARNING) << "PipeWire core error: id:" << id << " : " << message;
+
+  if (id == PW_ID_CORE && res == -EPIPE)
+    RTC_LOG(LS_WARNING) << "PipeWire core error: Pipe closed.";
+};
+#else
 void BaseCapturerPipeWire::OnStateChanged(void* data,
                                           pw_remote_state old_state,
                                           pw_remote_state state,
@@ -64,7 +84,7 @@ void BaseCapturerPipeWire::OnStateChange
       break;
     case PW_REMOTE_STATE_CONNECTED:
       RTC_LOG(LS_INFO) << "PipeWire remote state: connected.";
-      that->CreateReceivingStream();
+      that->pw_stream_ = that->CreateReceivingStream();
       break;
     case PW_REMOTE_STATE_CONNECTING:
       RTC_LOG(LS_INFO) << "PipeWire remote state: connecting.";
@@ -74,6 +94,7 @@ void BaseCapturerPipeWire::OnStateChange
       break;
   }
 }
+#endif
 
 // static
 void BaseCapturerPipeWire::OnStreamStateChanged(void* data,
@@ -87,12 +108,16 @@ void BaseCapturerPipeWire::OnStreamState
     case PW_STREAM_STATE_ERROR:
       RTC_LOG(LS_ERROR) << "PipeWire stream state error: " << error_message;
       break;
+#if !PW_CHECK_VERSION(0, 2, 90)
     case PW_STREAM_STATE_CONFIGURE:
-      pw_stream_set_active(that->pw_stream_, true);
+      pw_stream_set_active(that->pw_stream_, true); // TODO FIXME Removing 
this might cause problems?
       break;
+#endif
     case PW_STREAM_STATE_UNCONNECTED:
     case PW_STREAM_STATE_CONNECTING:
+#if !PW_CHECK_VERSION(0, 2, 90)
     case PW_STREAM_STATE_READY:
+#endif
     case PW_STREAM_STATE_PAUSED:
     case PW_STREAM_STATE_STREAMING:
       break;
@@ -100,22 +125,39 @@ void BaseCapturerPipeWire::OnStreamState
 }
 
 // static
+
+
+#if PW_CHECK_VERSION(0, 2, 90)
+void BaseCapturerPipeWire::OnStreamParamChanged(void* data,
+                                                uint32_t id,
+                                                const struct spa_pod* format) {
+#else
 void BaseCapturerPipeWire::OnStreamFormatChanged(void* data,
                                                  const struct spa_pod* format) 
{
+#endif
   BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
   RTC_DCHECK(that);
 
   RTC_LOG(LS_INFO) << "PipeWire stream format changed.";
 
+#if PW_CHECK_VERSION(0, 2, 90)
+  if (!format || id != SPA_PARAM_Format)
+    return;
+#else
   if (!format) {
     pw_stream_finish_format(that->pw_stream_, /*res=*/0, /*params=*/nullptr,
                             /*n_params=*/0);
     return;
   }
+#endif
 
   that->spa_video_format_ = new spa_video_info_raw();
+#if PW_CHECK_VERSION(0, 2, 90)
+  spa_format_video_raw_parse(format, that->spa_video_format_);
+#else
   spa_format_video_raw_parse(format, that->spa_video_format_,
                              &that->pw_type_->format_video);
+#endif
 
   auto width = that->spa_video_format_->size.width;
   auto height = that->spa_video_format_->size.height;
@@ -127,6 +169,16 @@ void BaseCapturerPipeWire::OnStreamForma
 
   // Setup buffers and meta header for new format.
   const struct spa_pod* params[2];
+#if PW_CHECK_VERSION(0, 2, 90)
+  params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_add_object(
+      &builder,
+      SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
+      SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int (8, 1, 32),
+      SPA_PARAM_BUFFERS_blocks, SPA_POD_Int (1),
+      SPA_PARAM_BUFFERS_size, SPA_POD_Int (size),
+      SPA_PARAM_BUFFERS_stride, SPA_POD_Int (stride),
+      SPA_PARAM_BUFFERS_align, SPA_POD_Int (16)));
+#else
   params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_object(
       &builder,
       // id to enumerate buffer requirements
@@ -145,6 +197,19 @@ void BaseCapturerPipeWire::OnStreamForma
       // Align: memory alignment of the buffer, set as integer (i) to specified
       // value
       ":", that->pw_core_type_->param_buffers.align, "i", 16));
+#endif
+
+
+
+#if PW_CHECK_VERSION(0, 2, 90)
+  params[1] = reinterpret_cast<spa_pod*>(spa_pod_builder_add_object(
+      &builder,
+      SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
+      SPA_PARAM_META_type, SPA_POD_Id (SPA_META_Header),
+      SPA_PARAM_META_size, SPA_POD_Int (sizeof (struct spa_meta_header))));
+
+  pw_stream_update_params(that->pw_stream_, params, /*n_params=*/2);
+#else
   params[1] = reinterpret_cast<spa_pod*>(spa_pod_builder_object(
       &builder,
       // id to enumerate supported metadata
@@ -157,6 +222,7 @@ void BaseCapturerPipeWire::OnStreamForma
       sizeof(struct spa_meta_header)));
 
   pw_stream_finish_format(that->pw_stream_, /*res=*/0, params, /*n_params=*/2);
+#endif
 }
 
 // static
@@ -183,9 +249,11 @@ BaseCapturerPipeWire::~BaseCapturerPipeW
     pw_thread_loop_stop(pw_main_loop_);
   }
 
+#if !PW_CHECK_VERSION(0, 2, 90)
   if (pw_type_) {
     delete pw_type_;
   }
+#endif
 
   if (spa_video_format_) {
     delete spa_video_format_;
@@ -195,6 +263,16 @@ BaseCapturerPipeWire::~BaseCapturerPipeW
     pw_stream_destroy(pw_stream_);
   }
 
+
+#if PW_CHECK_VERSION(0, 2, 90)
+  if (pw_core_) {
+    pw_core_disconnect(pw_core_);
+  }
+
+  if (pw_context_) {
+    pw_context_destroy(pw_context_);
+  }
+#else
   if (pw_remote_) {
     pw_remote_destroy(pw_remote_);
   }
@@ -202,14 +280,17 @@ BaseCapturerPipeWire::~BaseCapturerPipeW
   if (pw_core_) {
     pw_core_destroy(pw_core_);
   }
+#endif
 
   if (pw_main_loop_) {
     pw_thread_loop_destroy(pw_main_loop_);
   }
 
+#if !PW_CHECK_VERSION(0, 2, 90)
   if (pw_loop_) {
     pw_loop_destroy(pw_loop_);
   }
+#endif
 
   if (current_frame_) {
     free(current_frame_);
@@ -284,6 +365,27 @@ void BaseCapturerPipeWire::InitPipeWire(
 
   pw_init(/*argc=*/nullptr, /*argc=*/nullptr);
 
+#if PW_CHECK_VERSION(0, 2, 90)
+  pw_main_loop_ = pw_thread_loop_new("pipewire-main-loop", nullptr);
+
+  pw_context_ = pw_context_new(pw_thread_loop_get_loop(pw_main_loop_), 
/*properties=*/nullptr, /*user_data_size=*/0);
+  if (!pw_context_)
+  {
+    RTC_LOG(LS_ERROR) << "Failed to create PipeWire context.";
+    portal_init_failed_ = true;
+    return;
+  }
+
+  pw_core_ = pw_context_connect(pw_context_, nullptr, /*user_data_size=*/0);
+  if (!pw_core_)
+  {
+    RTC_LOG(LS_ERROR) << "Failed to connect PipeWire context.";
+    portal_init_failed_ = true;
+    return;
+  }
+  pw_core_events_.version = PW_VERSION_CORE_EVENTS;
+  pw_core_events_.error = &OnCoreError;
+#else
   pw_loop_ = pw_loop_new(/*properties=*/nullptr);
   pw_main_loop_ = pw_thread_loop_new(pw_loop_, "pipewire-main-loop");
 
@@ -296,15 +398,30 @@ void BaseCapturerPipeWire::InitPipeWire(
   // Initialize event handlers, remote end and stream-related.
   pw_remote_events_.version = PW_VERSION_REMOTE_EVENTS;
   pw_remote_events_.state_changed = &OnStateChanged;
+#endif
 
   pw_stream_events_.version = PW_VERSION_STREAM_EVENTS;
   pw_stream_events_.state_changed = &OnStreamStateChanged;
+#if PW_CHECK_VERSION(0, 2, 90)
+  pw_stream_events_.param_changed = &OnStreamParamChanged;
+#else
   pw_stream_events_.format_changed = &OnStreamFormatChanged;
+#endif
   pw_stream_events_.process = &OnStreamProcess;
 
+#if PW_CHECK_VERSION(0, 2, 90)
+  pw_core_add_listener (pw_core_,
+                        &pw_core_listener_,
+                        &pw_core_events_,
+                        this);
+  pw_stream_ = CreateReceivingStream ();
+  if (!pw_stream_)
+   return;
+#else
   pw_remote_add_listener(pw_remote_, &spa_remote_listener_, &pw_remote_events_,
                          this);
   pw_remote_connect_fd(pw_remote_, pw_fd_);
+#endif
 
   if (pw_thread_loop_start(pw_main_loop_) < 0) {
     RTC_LOG(LS_ERROR) << "Failed to start main PipeWire loop";
@@ -314,6 +431,7 @@ void BaseCapturerPipeWire::InitPipeWire(
   RTC_LOG(LS_INFO) << "PipeWire remote opened.";
 }
 
+#if !PW_CHECK_VERSION(0, 2, 90)
 void BaseCapturerPipeWire::InitPipeWireTypes() {
   spa_type_map* map = pw_core_type_->map;
   pw_type_ = new PipeWireType();
@@ -323,23 +441,41 @@ void BaseCapturerPipeWire::InitPipeWireT
   spa_type_format_video_map(map, &pw_type_->format_video);
   spa_type_video_format_map(map, &pw_type_->video_format);
 }
+#endif
 
-void BaseCapturerPipeWire::CreateReceivingStream() {
-  spa_rectangle pwMinScreenBounds = spa_rectangle{1, 1};
+pw_stream *BaseCapturerPipeWire::CreateReceivingStream() {
+  spa_rectangle pwMinScreenBounds = SPA_RECTANGLE(1, 1);
   spa_rectangle pwScreenBounds =
-      spa_rectangle{static_cast<uint32_t>(desktop_size_.width()),
-                    static_cast<uint32_t>(desktop_size_.height())};
+      SPA_RECTANGLE(static_cast<uint32_t>(desktop_size_.width()),
+                    static_cast<uint32_t>(desktop_size_.height()));
+
+  spa_fraction pwFrameRateMin = SPA_FRACTION(0, 1);
+  spa_fraction pwFrameRateMax = SPA_FRACTION(60, 1);
 
-  spa_fraction pwFrameRateMin = spa_fraction{0, 1};
-  spa_fraction pwFrameRateMax = spa_fraction{60, 1};
 
   pw_properties* reuseProps =
       pw_properties_new_string("pipewire.client.reuse=1");
-  pw_stream_ = pw_stream_new(pw_remote_, "webrtc-consume-stream", reuseProps);
+#if PW_CHECK_VERSION(0, 2, 90)
+  pw_stream *stream = pw_stream_new(pw_core_, "webrtc-consume-stream", 
reuseProps);
+#else
+  pw_stream *stream = pw_stream_new(pw_remote_, "webrtc-consume-stream", 
reuseProps);
+#endif
 
   uint8_t buffer[1024] = {};
   const spa_pod* params[1];
   spa_pod_builder builder = spa_pod_builder{buffer, sizeof(buffer)};
+#if PW_CHECK_VERSION(0, 2, 90)
+  params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_add_object(
+      &builder,
+      // id to enumerate formats
+      SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
+      SPA_FORMAT_mediaType, SPA_POD_Id (SPA_MEDIA_TYPE_video),
+      SPA_FORMAT_mediaSubtype, SPA_POD_Id (SPA_MEDIA_SUBTYPE_raw),
+      SPA_FORMAT_VIDEO_format, SPA_POD_Id (SPA_VIDEO_FORMAT_BGRx),
+      SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle(&pwScreenBounds, 
&pwMinScreenBounds, &pwScreenBounds),
+      SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction(&pwFrameRateMin),
+      SPA_FORMAT_VIDEO_maxFramerate, 
SPA_POD_CHOICE_RANGE_Fraction(&pwFrameRateMax, &pwFrameRateMin, 
&pwFrameRateMax)));
+#else
   params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_object(
       &builder,
       // id to enumerate formats
@@ -364,19 +500,28 @@ void BaseCapturerPipeWire::CreateReceivi
       // min and max values and it is undecided (u) to allow negotiation
       ":", pw_type_->format_video.max_framerate, "Fru", &pwFrameRateMax, 2,
       &pwFrameRateMin, &pwFrameRateMax));
-
-  pw_stream_add_listener(pw_stream_, &spa_stream_listener_, &pw_stream_events_,
+  pw_stream_add_listener(stream, &spa_stream_listener_, &pw_stream_events_,
                          this);
+#endif
+
   pw_stream_flags flags = static_cast<pw_stream_flags>(
       PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_INACTIVE |
       PW_STREAM_FLAG_MAP_BUFFERS);
-  if (pw_stream_connect(pw_stream_, PW_DIRECTION_INPUT, /*port_path=*/nullptr,
+
+#if PW_CHECK_VERSION(0, 2, 90)
+  if (pw_stream_connect(stream, PW_DIRECTION_INPUT, PW_ID_ANY,
+                        flags, params,
+                        /*n_params=*/1) != 0) {
+#else
+  if (pw_stream_connect(stream, PW_DIRECTION_INPUT, /*port_path=*/nullptr,
                         flags, params,
                         /*n_params=*/1) != 0) {
+#endif
     RTC_LOG(LS_ERROR) << "Could not connect receiving stream.";
     portal_init_failed_ = true;
-    return;
   }
+
+  return stream;
 }
 
 void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) {
@@ -404,7 +549,11 @@ void BaseCapturerPipeWire::HandleBuffer(
 
   // If both sides decided to go with the RGBx format we need to convert it to
   // BGRx to match color format expected by WebRTC.
+#if PW_CHECK_VERSION(0, 2, 90)
+  if (spa_video_format_->format == SPA_VIDEO_FORMAT_RGBx) {
+#else
   if (spa_video_format_->format == pw_type_->video_format.RGBx) {
+#endif
     uint8_t* tempFrame = static_cast<uint8_t*>(malloc(maxSize));
     std::memcpy(tempFrame, src, maxSize);
     ConvertRGBxToBGRx(tempFrame, maxSize);
Index: 
chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
===================================================================
--- 
chromium-81.0.4044.83.orig/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
+++ 
chromium-81.0.4044.83/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
@@ -22,6 +22,7 @@
 
 namespace webrtc {
 
+#if !PW_CHECK_VERSION(0, 2, 90)
 class PipeWireType {
  public:
   spa_type_media_type media_type;
@@ -29,6 +30,7 @@ class PipeWireType {
   spa_type_format_video format_video;
   spa_type_video_format video_format;
 };
+#endif
 
 class BaseCapturerPipeWire : public DesktopCapturer {
  public:
@@ -45,6 +47,18 @@ class BaseCapturerPipeWire : public Desk
 
  private:
   // PipeWire types -->
+#if PW_CHECK_VERSION(0, 2, 90)
+  pw_context* pw_context_ = nullptr;
+  pw_core* pw_core_ = nullptr;
+  pw_stream* pw_stream_ = nullptr;
+  pw_thread_loop* pw_main_loop_ = nullptr;
+
+  spa_hook pw_core_listener_ = {};
+  spa_hook spa_stream_listener_ = {};
+
+  pw_core_events pw_core_events_ = {};
+  pw_stream_events pw_stream_events_ = {};
+#else
   pw_core* pw_core_ = nullptr;
   pw_type* pw_core_type_ = nullptr;
   pw_stream* pw_stream_ = nullptr;
@@ -58,6 +72,7 @@ class BaseCapturerPipeWire : public Desk
 
   pw_stream_events pw_stream_events_ = {};
   pw_remote_events pw_remote_events_ = {};
+#endif
 
   spa_video_info_raw* spa_video_format_ = nullptr;
 
@@ -89,23 +104,38 @@ class BaseCapturerPipeWire : public Desk
 
   void InitPortal();
   void InitPipeWire();
+#if !PW_CHECK_VERSION(0, 2, 90)
   void InitPipeWireTypes();
+#endif
 
-  void CreateReceivingStream();
+  pw_stream *CreateReceivingStream();
   void HandleBuffer(pw_buffer* buffer);
 
   void ConvertRGBxToBGRx(uint8_t* frame, uint32_t size);
 
+#if PW_CHECK_VERSION(0, 2, 90)
+  static void OnCoreError(void* data,
+                          uint32_t id,
+                          int seq,
+                          int res,
+                          const char *message);
+#else
   static void OnStateChanged(void* data,
                              pw_remote_state old_state,
                              pw_remote_state state,
                              const char* error);
+#endif
   static void OnStreamStateChanged(void* data,
                                    pw_stream_state old_state,
                                    pw_stream_state state,
                                    const char* error_message);
 
+#if PW_CHECK_VERSION(0, 2, 90)
+  static void OnStreamParamChanged(void* data, uint32_t id, const struct 
spa_pod* format);
+#else
   static void OnStreamFormatChanged(void* data, const struct spa_pod* format);
+#endif
+
   static void OnStreamProcess(void* data);
   static void OnNewBuffer(void* data, uint32_t id);
 
Index: chromium-81.0.4044.83/third_party/webrtc/webrtc.gni
===================================================================
--- chromium-81.0.4044.83.orig/third_party/webrtc/webrtc.gni
+++ chromium-81.0.4044.83/third_party/webrtc/webrtc.gni
@@ -114,6 +114,9 @@ declare_args() {
   # supported Ubuntu and Debian distributions.
   rtc_use_pipewire = is_desktop_linux && use_sysroot
 
+  # Sets the pipewire pkg-config version to use if rtc_use_pipewire is true
+  rtc_use_pipewire_version = "0.2"
+
   # Set this to link PipeWire directly instead of using the dlopen.
   rtc_link_pipewire = false
 
++++++ chromium-81-gcc-constexpr.patch ++++++
diff --git a/ui/views/layout/layout_types.h b/ui/views/layout/layout_types.h
index 8f9dbf4..ba118b9 100644
--- a/ui/views/layout/layout_types.h
+++ b/ui/views/layout/layout_types.h
@@ -45,12 +45,12 @@ class VIEWS_EXPORT SizeBounds {
   ~SizeBounds() = default;
 
   constexpr const base::Optional<int>& width() const { return width_; }
-  constexpr void set_width(base::Optional<int> width) {
+  inline void set_width(base::Optional<int> width) {
     width_ = std::move(width);
   }
 
   constexpr const base::Optional<int>& height() const { return height_; }
-  constexpr void set_height(base::Optional<int> height) {
+  inline void set_height(base::Optional<int> height) {
     height_ = std::move(height);
   }
 
++++++ chromium-81-gcc-noexcept.patch ++++++
diff --git a/components/paint_preview/browser/paint_preview_client.cc 
b/components/paint_preview/browser/paint_preview_client.cc
index 38ab6be..dccf07f 100644
--- a/components/paint_preview/browser/paint_preview_client.cc
+++ b/components/paint_preview/browser/paint_preview_client.cc
@@ -78,7 +78,7 @@ PaintPreviewClient::PaintPreviewData::PaintPreviewData() = 
default;
 PaintPreviewClient::PaintPreviewData::~PaintPreviewData() = default;
 
 PaintPreviewClient::PaintPreviewData& PaintPreviewClient::PaintPreviewData::
-operator=(PaintPreviewData&& rhs) noexcept = default;
+operator=(PaintPreviewData&& rhs) = default;
 PaintPreviewClient::PaintPreviewData::PaintPreviewData(
     PaintPreviewData&& other) noexcept = default;
 
++++++ chromium-80.0.3987.149.tar.xz -> chromium-81.0.4044.92.tar.xz ++++++
/work/SRC/openSUSE:Leap:15.2/chromium/chromium-80.0.3987.149.tar.xz 
/work/SRC/openSUSE:Leap:15.2/.chromium.new.2738/chromium-81.0.4044.92.tar.xz 
differ: char 26, line 1

++++++ chromium-vaapi-fix.patch ++++++
--- /var/tmp/diff_new_pack.TSX4yf/_old  2020-04-17 13:38:02.420242312 +0200
+++ /var/tmp/diff_new_pack.TSX4yf/_new  2020-04-17 13:38:02.420242312 +0200
@@ -2,9 +2,11 @@
 author: Maxim Baz
 origin: chromium-vaapi patches from Arch linux
 
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-@@ -641,6 +641,7 @@ void VaapiVideoDecodeAccelerator::Assign
+Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+===================================================================
+--- 
chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
++++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+@@ -712,6 +712,7 @@ void VaapiVideoDecodeAccelerator::Assign
    // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's
    // internal decoded frame.
    if (buffer_allocation_mode_ != BufferAllocationMode::kNone &&
@@ -12,17 +14,17 @@
        !vpp_vaapi_wrapper_) {
      vpp_vaapi_wrapper_ = VaapiWrapper::Create(
          VaapiWrapper::kVideoProcess, VAProfileNone,
-@@ -665,7 +666,8 @@ void VaapiVideoDecodeAccelerator::Assign
-     PictureBuffer buffer = buffers[i];
-     buffer.set_size(requested_pic_size_);
+@@ -743,7 +744,8 @@ void VaapiVideoDecodeAccelerator::Assign
+             : gfx::Size();
+ 
      std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create(
 -        (buffer_allocation_mode_ == BufferAllocationMode::kNone)
 +        ((buffer_allocation_mode_ == BufferAllocationMode::kNone) ||
 +         (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau))
              ? vaapi_wrapper_
              : vpp_vaapi_wrapper_,
-         make_context_current_cb_, bind_image_cb_, buffer);
-@@ -1093,6 +1095,14 @@ VaapiVideoDecodeAccelerator::GetSupporte
+         make_context_current_cb_, bind_image_cb_, buffer, size_to_bind);
+@@ -1199,6 +1201,14 @@ VaapiVideoDecodeAccelerator::GetSupporte
  
  VaapiVideoDecodeAccelerator::BufferAllocationMode
  VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
@@ -37,7 +39,7 @@
    // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
    // |output_mode_| as well.
    if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
-@@ -1105,7 +1115,7 @@ VaapiVideoDecodeAccelerator::DecideBuffe
+@@ -1211,7 +1221,7 @@ VaapiVideoDecodeAccelerator::DecideBuffe
    // depends on the bitstream and sometimes it's not enough to cover the 
amount
    // of frames needed by the client pipeline (see b/133733739).
    // TODO(crbug.com/911754): Enable for VP9 Profile 2.
@@ -46,9 +48,11 @@
        (profile_ == VP9PROFILE_PROFILE0 || profile_ == VP8PROFILE_ANY)) {
      // Add one to the reference frames for the one being currently egressed, 
and
      // an extra allocation for both |client_| and |decoder_|, see
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
-@@ -204,6 +204,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeA
+Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.h
+===================================================================
+--- chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_video_decode_accelerator.h
++++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.h
+@@ -208,6 +208,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeA
      // Using |client_|s provided PictureBuffers and as many internally
      // allocated.
      kNormal,
@@ -56,9 +60,11 @@
    };
  
    // Decides the concrete buffer allocation mode, depending on the hardware
---- a/media/gpu/vaapi/vaapi_wrapper.cc
-+++ b/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -1072,6 +1072,11 @@ VAImplementation VaapiWrapper::GetImplem
+Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.cc
+===================================================================
+--- chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_wrapper.cc
++++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.cc
+@@ -1137,6 +1137,11 @@ VAImplementation VaapiWrapper::GetImplem
  }
  
  // static
@@ -70,8 +76,10 @@
  scoped_refptr<VaapiWrapper> VaapiWrapper::Create(
      CodecMode mode,
      VAProfile va_profile,
---- a/media/gpu/vaapi/vaapi_wrapper.h
-+++ b/media/gpu/vaapi/vaapi_wrapper.h
+Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.h
+===================================================================
+--- chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_wrapper.h
++++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.h
 @@ -119,6 +119,9 @@ class MEDIA_GPU_EXPORT VaapiWrapper
    // Returns the type of the underlying VA-API implementation.
    static VAImplementation GetImplementationType();

++++++ chromium-vaapi.patch ++++++
--- /var/tmp/diff_new_pack.TSX4yf/_old  2020-04-17 13:38:02.428242318 +0200
+++ /var/tmp/diff_new_pack.TSX4yf/_new  2020-04-17 13:38:02.432242321 +0200
@@ -1,8 +1,8 @@
-Index: chromium-80.0.3987.87/chrome/browser/about_flags.cc
+Index: chromium-81.0.4040.5/chrome/browser/about_flags.cc
 ===================================================================
---- chromium-80.0.3987.87.orig/chrome/browser/about_flags.cc
-+++ chromium-80.0.3987.87/chrome/browser/about_flags.cc
-@@ -1865,7 +1865,7 @@ const FeatureEntry kFeatureEntries[] = {
+--- chromium-81.0.4040.5.orig/chrome/browser/about_flags.cc
++++ chromium-81.0.4040.5/chrome/browser/about_flags.cc
+@@ -1876,7 +1876,7 @@ const FeatureEntry kFeatureEntries[] = {
          "disable-accelerated-video-decode",
          flag_descriptions::kAcceleratedVideoDecodeName,
          flag_descriptions::kAcceleratedVideoDecodeDescription,
@@ -11,7 +11,7 @@
          SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
      },
      {
-@@ -2325,10 +2325,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2311,10 +2311,10 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)},
  #endif  // !defined(OS_ANDROID)
  #endif  // ENABLE_VR
@@ -24,11 +24,11 @@
       SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)},
  #endif  // OS_CHROMEOS
      {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName,
-Index: chromium-80.0.3987.87/chrome/browser/flag_descriptions.cc
+Index: chromium-81.0.4040.5/chrome/browser/flag_descriptions.cc
 ===================================================================
---- chromium-80.0.3987.87.orig/chrome/browser/flag_descriptions.cc
-+++ chromium-80.0.3987.87/chrome/browser/flag_descriptions.cc
-@@ -3160,15 +3160,20 @@ const char kMetalDescription[] =
+--- chromium-81.0.4040.5.orig/chrome/browser/flag_descriptions.cc
++++ chromium-81.0.4040.5/chrome/browser/flag_descriptions.cc
+@@ -3181,15 +3181,20 @@ const char kMetalDescription[] =
  
  #endif
  
@@ -51,11 +51,11 @@
  
  const char kAggregatedMlAppRankingName[] = "Rank suggested apps with ML.";
  const char kAggregatedMlAppRankingDescription[] =
-Index: chromium-80.0.3987.87/chrome/browser/flag_descriptions.h
+Index: chromium-81.0.4040.5/chrome/browser/flag_descriptions.h
 ===================================================================
---- chromium-80.0.3987.87.orig/chrome/browser/flag_descriptions.h
-+++ chromium-80.0.3987.87/chrome/browser/flag_descriptions.h
-@@ -1863,11 +1863,15 @@ extern const char kPermissionPromptPersi
+--- chromium-81.0.4040.5.orig/chrome/browser/flag_descriptions.h
++++ chromium-81.0.4040.5/chrome/browser/flag_descriptions.h
+@@ -1882,11 +1882,15 @@ extern const char kPermissionPromptPersi
  
  // Chrome OS 
------------------------------------------------------------------
  
@@ -72,21 +72,50 @@
  extern const char kAggregatedMlAppRankingName[];
  extern const char kAggregatedMlAppRankingDescription[];
  
-Index: chromium-80.0.3987.87/gpu/config/software_rendering_list.json
+Index: chromium-81.0.4040.5/gpu/config/software_rendering_list.json
 ===================================================================
---- chromium-80.0.3987.87.orig/gpu/config/software_rendering_list.json
-+++ chromium-80.0.3987.87/gpu/config/software_rendering_list.json
-@@ -334,11 +334,12 @@
+--- chromium-81.0.4040.5.orig/gpu/config/software_rendering_list.json
++++ chromium-81.0.4040.5/gpu/config/software_rendering_list.json
+@@ -337,7 +337,7 @@
      },
      {
        "id": 48,
 -      "description": "Accelerated video decode is unavailable on Linux",
 +      "description": "Accelerated VA-API video decode is not supported on 
NVIDIA platforms",
-       "cr_bugs": [137247],
+       "cr_bugs": [137247, 1032907],
        "os": {
          "type": "linux"
-       },
+@@ -347,6 +347,7 @@
+           "machine_model_name": ["Chromecast"]
+         }
+       ],
 +      "vendor_id": "0x10de",
        "features": [
          "accelerated_video_decode"
        ]
+Index: beta/media/gpu/test/BUILD.gn
+===================================================================
+--- beta.orig/media/gpu/test/BUILD.gn
++++ beta/media/gpu/test/BUILD.gn
+@@ -150,7 +150,7 @@ if (use_vaapi || use_v4l2_codec) {
+   }
+ }
+ 
+-if (is_chromeos) {
++if (is_chromeos || use_vaapi) {
+   static_library("local_gpu_memory_buffer_manager") {
+     testonly = true
+     sources = [
+Index: beta/media/mojo/services/gpu_mojo_media_client.cc
+===================================================================
+--- beta.orig/media/mojo/services/gpu_mojo_media_client.cc
++++ beta/media/mojo/services/gpu_mojo_media_client.cc
+@@ -157,7 +157,7 @@ GpuMojoMediaClient::GetSupportedVideoDec
+   supported_config_map[VideoDecoderImplementation::kAlternate] =
+       *d3d11_supported_configs_;
+ 
+-#elif BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
++#elif defined(OS_CHROMEOS) && BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
+   if (base::FeatureList::IsEnabled(kChromeosVideoDecoder)) {
+     if (!cros_supported_configs_) {
+       cros_supported_configs_ =

++++++ fix-vaapi-with-glx.patch ++++++
commit 5b2ff215473e0526b5b24aeff4ad90d369b21c75
Author: Julien Isorce <julien.iso...@chromium.org>
Date:   Wed Feb 5 17:59:59 2020 +0000

    Fix vaapi with GLX
    
    The signature of ui's gl::GLImageGLX has changed a little bit
    since "mplement GpuMemoryBuffers for EGL and GLX":
      https://chromium-review.googlesource.com/c/chromium/src/+/1984712
    
    Bug: 1031269
    Test: build with use_vaapi=true and run with --use-gl=desktop, see
    Change-Id: I80b07294b9abdfa8233aaf79f7d9ec4c58117090
    https: 
//chromium.googlesource.com/chromium/src.git/+/refs/heads/master/docs/gpu/vaapi.md#vaapi-on-linux
    Reviewed-on: 
https://chromium-review.googlesource.com/c/chromium/src/+/2036494
    Reviewed-by: Thomas Anderson <thomasander...@chromium.org>
    Reviewed-by: Miguel Casas <mca...@chromium.org>
    Commit-Queue: Julien Isorce <julien.iso...@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#738595}

Index: beta/media/gpu/vaapi/vaapi_picture_tfp.cc
===================================================================
--- beta.orig/media/gpu/vaapi/vaapi_picture_tfp.cc
+++ beta/media/gpu/vaapi/vaapi_picture_tfp.cc
@@ -57,7 +57,7 @@ bool VaapiTFPPicture::Initialize() {
   if (make_context_current_cb_ && !make_context_current_cb_.Run())
     return false;
 
-  glx_image_ = new gl::GLImageGLX(size_, GL_RGB);
+  glx_image_ = new gl::GLImageGLX(size_, gfx::BufferFormat::BGRX_8888);
   if (!glx_image_->Initialize(x_pixmap_)) {
     // x_pixmap_ will be freed in the destructor.
     DLOG(ERROR) << "Failed creating a GLX Pixmap for TFP";
++++++ gpu-timeout.patch ++++++
--- /var/tmp/diff_new_pack.TSX4yf/_old  2020-04-17 13:38:02.464242345 +0200
+++ /var/tmp/diff_new_pack.TSX4yf/_new  2020-04-17 13:38:02.464242345 +0200
@@ -2,9 +2,11 @@
 author: Chad MILLER <chad.mil...@canonical.com>
 bug-debian: http://bugs.debian.org/781940
 
---- a/gpu/ipc/service/gpu_watchdog_thread.cc
-+++ b/gpu/ipc/service/gpu_watchdog_thread.cc
-@@ -37,7 +37,7 @@ const int kGpuTimeout = 30000;
+Index: chromium-81.0.4040.5/gpu/ipc/service/gpu_watchdog_thread.cc
+===================================================================
+--- chromium-81.0.4040.5.orig/gpu/ipc/service/gpu_watchdog_thread.cc
++++ chromium-81.0.4040.5/gpu/ipc/service/gpu_watchdog_thread.cc
+@@ -39,7 +39,7 @@ const int kGpuTimeout = 30000;
  // hangs at context creation during startup. See https://crbug.com/918490.
  const int kGpuTimeout = 15000;
  #else
@@ -12,4 +14,4 @@
 +const int kGpuTimeout = 20000;
  #endif
  
- #if defined(USE_X11)
+ // The same set of timeouts from Watchdog V2 so we can compare the results

++++++ old-libva.patch ++++++
--- /var/tmp/diff_new_pack.TSX4yf/_old  2020-04-17 13:38:02.484242360 +0200
+++ /var/tmp/diff_new_pack.TSX4yf/_new  2020-04-17 13:38:02.484242360 +0200
@@ -1,7 +1,7 @@
-Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_wrapper.cc
+Index: chromium-81.0.4040.5/media/gpu/vaapi/vaapi_wrapper.cc
 ===================================================================
---- chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_wrapper.cc
-+++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_wrapper.cc
+--- chromium-81.0.4040.5.orig/media/gpu/vaapi/vaapi_wrapper.cc
++++ chromium-81.0.4040.5/media/gpu/vaapi/vaapi_wrapper.cc
 @@ -65,6 +65,10 @@
  #include "ui/ozone/public/surface_factory_ozone.h"
  #endif
@@ -13,7 +13,7 @@
  using media_gpu_vaapi::kModuleVa;
  using media_gpu_vaapi::kModuleVa_drm;
  #if defined(USE_X11)
-@@ -367,10 +371,6 @@ bool VADisplayState::Initialize() {
+@@ -369,10 +373,6 @@ bool VADisplayState::Initialize() {
  }
  
  bool VADisplayState::InitializeOnce() {
@@ -24,7 +24,7 @@
    switch (gl::GetGLImplementation()) {
      case gl::kGLImplementationEGLGLES2:
        va_display_ = vaGetDisplayDRM(drm_fd_.get());
-@@ -1502,7 +1502,7 @@ VaapiWrapper::ExportVASurfaceAsNativePix
+@@ -1508,7 +1508,7 @@ VaapiWrapper::ExportVASurfaceAsNativePix
      LOG(ERROR) << "Cannot export an invalid surface";
      return nullptr;
    }
@@ -33,7 +33,7 @@
    VADRMPRIMESurfaceDescriptor descriptor;
    {
      base::AutoLock auto_lock(*va_lock_);
-@@ -1595,6 +1595,10 @@ VaapiWrapper::ExportVASurfaceAsNativePix
+@@ -1601,6 +1601,10 @@ VaapiWrapper::ExportVASurfaceAsNativePix
    exported_pixmap->pixmap = base::MakeRefCounted<gfx::NativePixmapDmaBuf>(
        scoped_va_surface.size(), buffer_format, std::move(handle));
    return exported_pixmap;
@@ -44,10 +44,10 @@
  }
  
  bool VaapiWrapper::SyncSurface(VASurfaceID va_surface_id) {
-Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_jpeg_decoder.cc
+Index: chromium-81.0.4040.5/media/gpu/vaapi/vaapi_jpeg_decoder.cc
 ===================================================================
---- chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_jpeg_decoder.cc
-+++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_jpeg_decoder.cc
+--- chromium-81.0.4040.5.orig/media/gpu/vaapi/vaapi_jpeg_decoder.cc
++++ chromium-81.0.4040.5/media/gpu/vaapi/vaapi_jpeg_decoder.cc
 @@ -20,6 +20,10 @@
  #include "media/parsers/jpeg_parser.h"
  #include "ui/gfx/geometry/size.h"
@@ -59,10 +59,10 @@
  namespace media {
  
  namespace {
-Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
+Index: chromium-81.0.4040.5/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
 ===================================================================
---- 
chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
-+++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
+--- chromium-81.0.4040.5.orig/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
++++ chromium-81.0.4040.5/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
 @@ -44,6 +44,10 @@
  #include "ui/gfx/geometry/size.h"
  #include "ui/gfx/gpu_memory_buffer.h"
@@ -74,11 +74,11 @@
  namespace media {
  
  namespace {
-Index: chromium-79.0.3945.36/media/gpu/chromeos/fourcc.cc
+Index: chromium-81.0.4040.5/media/gpu/chromeos/fourcc.cc
 ===================================================================
---- chromium-79.0.3945.36.orig/media/gpu/chromeos/fourcc.cc
-+++ chromium-79.0.3945.36/media/gpu/chromeos/fourcc.cc
-@@ -15,6 +15,13 @@
+--- chromium-81.0.4040.5.orig/media/gpu/chromeos/fourcc.cc
++++ chromium-81.0.4040.5/media/gpu/chromeos/fourcc.cc
+@@ -16,6 +16,13 @@
  #include <va/va.h>
  #endif  // BUILDFLAG(USE_VAAPI)
  
@@ -91,4 +91,4 @@
 +
  namespace media {
  
- Fourcc::Fourcc() : value_(Fourcc::INVALID) {}
+ Fourcc::Fourcc(Fourcc::Value fourcc) : value_(fourcc) {}


Reply via email to