summary refs log tree commit diff
path: root/pkgs/applications/networking/browsers/chromium
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-03-26 17:17:48 +0000
committerAlyssa Ross <hi@alyssa.is>2020-03-26 17:36:07 +0000
commit70e58881128ed8170821840138ab08fc5cdd3c11 (patch)
tree1bf0d3d977878df5b58493ea02b2e6c79df3ba22 /pkgs/applications/networking/browsers/chromium
parenta9847c36e6aa003998c1ef5518e5710658ca5770 (diff)
parent90dcc3360327e250536eeeca7fe9d887c9f7a817 (diff)
downloadnixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.gz
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.bz2
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.lz
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.xz
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.zst
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.zip
Merge remote-tracking branch 'nixpkgs/master' into master
Diffstat (limited to 'pkgs/applications/networking/browsers/chromium')
-rw-r--r--pkgs/applications/networking/browsers/chromium/browser.nix10
-rw-r--r--pkgs/applications/networking/browsers/chromium/common.nix3
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix8
-rw-r--r--pkgs/applications/networking/browsers/chromium/patches/vaapi-fix.patch42
-rw-r--r--pkgs/applications/networking/browsers/chromium/patches/webrtc-pulse.patch61
-rw-r--r--pkgs/applications/networking/browsers/chromium/plugins.nix4
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.nix18
7 files changed, 120 insertions, 26 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix
index ec69f3d233f..edbf97e8963 100644
--- a/pkgs/applications/networking/browsers/chromium/browser.nix
+++ b/pkgs/applications/networking/browsers/chromium/browser.nix
@@ -18,6 +18,16 @@ mkChromiumDerivation (base: rec {
     cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
     cp -v "$buildPath/chrome" "$libExecPath/$packageName"
 
+    # Swiftshader
+    # See https://stackoverflow.com/a/4264351/263061 for the find invocation.
+    if [ -n "$(find "$buildPath/swiftshader/" -maxdepth 1 -name '*.so' -print -quit)" ]; then
+      echo "Swiftshader files found; installing"
+      mkdir -p "$libExecPath/swiftshader"
+      cp -v "$buildPath/swiftshader/"*.so "$libExecPath/swiftshader/"
+    else
+      echo "Swiftshader files not found"
+    fi
+
     mkdir -p "$sandbox/bin"
     cp -v "$buildPath/chrome_sandbox" "$sandbox/bin/${sandboxExecutableName}"
 
diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix
index 31e69916196..83c492e1e65 100644
--- a/pkgs/applications/networking/browsers/chromium/common.nix
+++ b/pkgs/applications/networking/browsers/chromium/common.nix
@@ -137,6 +137,8 @@ let
       ./patches/no-build-timestamps.patch
       ./patches/widevine-79.patch
       ./patches/dont-use-ANGLE-by-default.patch
+      # fix race condition in the interaction with pulseaudio
+      ./patches/webrtc-pulse.patch
       # Unfortunately, chromium regularly breaks on major updates and
       # then needs various patches backported in order to be compiled with GCC.
       # Good sources for such patches and other hints:
@@ -240,7 +242,6 @@ let
       is_clang = stdenv.cc.isClang;
       clang_use_chrome_plugins = false;
       blink_symbol_level = 0;
-      enable_swiftshader = false;
       fieldtrial_testing_like_official_build = true;
 
       # Google API keys, see:
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index c3522e17379..8968a10bed0 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -1,4 +1,4 @@
-{ newScope, config, stdenv, llvmPackages_9
+{ newScope, config, stdenv, llvmPackages_9, llvmPackages_10
 , makeWrapper, ed
 , glib, gtk3, gnome3, gsettings-desktop-schemas
 , libva ? null
@@ -19,8 +19,10 @@
 }:
 
 let
-  stdenv = llvmPackages_9.stdenv;
-  llvmPackages = llvmPackages_9;
+  llvmPackages = if channel == "dev"
+    then llvmPackages_10
+    else llvmPackages_9;
+  stdenv = llvmPackages.stdenv;
 
   callPackage = newScope chromium;
 
diff --git a/pkgs/applications/networking/browsers/chromium/patches/vaapi-fix.patch b/pkgs/applications/networking/browsers/chromium/patches/vaapi-fix.patch
index db9d6082756..b5372d1a255 100644
--- a/pkgs/applications/networking/browsers/chromium/patches/vaapi-fix.patch
+++ b/pkgs/applications/networking/browsers/chromium/patches/vaapi-fix.patch
@@ -1,6 +1,6 @@
 --- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
 +++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-@@ -635,6 +635,7 @@
+@@ -641,6 +641,7 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
    // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's
    // internal decoded frame.
    if (buffer_allocation_mode_ != BufferAllocationMode::kNone &&
@@ -8,24 +8,22 @@
        !vpp_vaapi_wrapper_) {
      vpp_vaapi_wrapper_ = VaapiWrapper::Create(
          VaapiWrapper::kVideoProcess, VAProfileNone,
-@@ -650,7 +651,8 @@
-     // only used as a copy destination. Therefore, the VaapiWrapper used and
-     // owned by |picture| is |vpp_vaapi_wrapper_|.
+@@ -665,7 +666,8 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
+     PictureBuffer buffer = buffers[i];
+     buffer.set_size(requested_pic_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_, buffers[i]);
-@@ -1077,6 +1079,14 @@
+         make_context_current_cb_, bind_image_cb_, buffer);
+@@ -1093,6 +1095,12 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
 
  VaapiVideoDecodeAccelerator::BufferAllocationMode
  VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
 +  // NVIDIA blobs use VDPAU
-+  if (base::StartsWith(VaapiWrapper::GetVendorStringForTesting(),
-+              "Splitted-Desktop Systems VDPAU",
-+              base::CompareCase::SENSITIVE)) {
++  if (VaapiWrapper::GetImplementationType() == VAImplementation::kNVIDIAVDPAU) {
 +    LOG(INFO) << "VA-API driver on VDPAU backend";
 +    return BufferAllocationMode::kWrapVdpau;
 +  }
@@ -33,7 +31,7 @@
    // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
    // |output_mode_| as well.
    if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
-@@ -1089,7 +1099,7 @@
+@@ -1105,7 +1113,7 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
    // 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.
@@ -44,7 +42,7 @@
      // 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 @@
+@@ -204,6 +204,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeAccelerator
      // Using |client_|s provided PictureBuffers and as many internally
      // allocated.
      kNormal,
@@ -52,3 +50,25 @@
    };
 
    // Decides the concrete buffer allocation mode, depending on the hardware
+--- a/media/gpu/vaapi/vaapi_wrapper.cc
++++ b/media/gpu/vaapi/vaapi_wrapper.cc
+@@ -131,6 +131,9 @@ media::VAImplementation VendorStringToImplementationType(
+   } else if (base::StartsWith(va_vendor_string, "Intel iHD driver",
+                               base::CompareCase::SENSITIVE)) {
+     return media::VAImplementation::kIntelIHD;
++  } else if (base::StartsWith(va_vendor_string, "Splitted-Desktop Systems VDPAU",
++                              base::CompareCase::SENSITIVE)) {
++    return media::VAImplementation::kNVIDIAVDPAU;
+   }
+   return media::VAImplementation::kOther;
+ }
+--- a/media/gpu/vaapi/vaapi_wrapper.h
++++ b/media/gpu/vaapi/vaapi_wrapper.h
+@@ -79,6 +79,7 @@ enum class VAImplementation {
+   kIntelIHD,
+   kOther,
+   kInvalid,
++  kNVIDIAVDPAU,
+ };
+
+ // This class handles VA-API calls and ensures proper locking of VA-API calls
diff --git a/pkgs/applications/networking/browsers/chromium/patches/webrtc-pulse.patch b/pkgs/applications/networking/browsers/chromium/patches/webrtc-pulse.patch
new file mode 100644
index 00000000000..cf24e270419
--- /dev/null
+++ b/pkgs/applications/networking/browsers/chromium/patches/webrtc-pulse.patch
@@ -0,0 +1,61 @@
+From 704dc99bd05a94eb61202e6127df94ddfd571e85 Mon Sep 17 00:00:00 2001
+From: Dale Curtis <dalecurtis@chromium.org>
+Date: Mon, 02 Mar 2020 22:12:22 +0000
+Subject: [PATCH] Hold PulseAudio mainloop lock while querying input device info.
+
+a22cc23955cb3d58b7525c5103314226b3ce0137 moved this section out of
+UpdateNativeAudioHardwareInfo(), but forgot to bring the lock along.
+
+R=guidou
+
+Bug: 1043040
+Change-Id: I5b17a2cf0ad55d61c0811db1dae7045af4a91370
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2083814
+Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
+Commit-Queue: Guido Urdaneta <guidou@chromium.org>
+Reviewed-by: Guido Urdaneta <guidou@chromium.org>
+Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#746115}
+---
+
+diff --git a/media/audio/pulse/audio_manager_pulse.cc b/media/audio/pulse/audio_manager_pulse.cc
+index 90e9317..829846f 100644
+--- a/media/audio/pulse/audio_manager_pulse.cc
++++ b/media/audio/pulse/audio_manager_pulse.cc
+@@ -104,22 +104,27 @@
+ 
+ AudioParameters AudioManagerPulse::GetInputStreamParameters(
+     const std::string& device_id) {
+-  int user_buffer_size = GetUserBufferSize();
+-  int buffer_size =
+-      user_buffer_size ? user_buffer_size : kDefaultInputBufferSize;
+-
+   UpdateNativeAudioHardwareInfo();
+-  auto* operation = pa_context_get_source_info_by_name(
+-      input_context_, default_source_name_.c_str(), DefaultSourceInfoCallback,
+-      this);
+-  WaitForOperationCompletion(input_mainloop_, operation, input_context_);
++
++  {
++    AutoPulseLock auto_lock(input_mainloop_);
++    auto* operation = pa_context_get_source_info_by_name(
++        input_context_, default_source_name_.c_str(), DefaultSourceInfoCallback,
++        this);
++    WaitForOperationCompletion(input_mainloop_, operation, input_context_);
++  }
+ 
+   // We don't want to accidentally open a monitor device, so return invalid
+-  // parameters for those.
++  // parameters for those. Note: The value of |default_source_is_monitor_|
++  // depends on the the call to pa_context_get_source_info_by_name() above.
+   if (device_id == AudioDeviceDescription::kDefaultDeviceId &&
+       default_source_is_monitor_) {
+     return AudioParameters();
+   }
++
++  const int user_buffer_size = GetUserBufferSize();
++  const int buffer_size =
++      user_buffer_size ? user_buffer_size : kDefaultInputBufferSize;
+   return AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
+                          CHANNEL_LAYOUT_STEREO,
+                          native_input_sample_rate_ ? native_input_sample_rate_
diff --git a/pkgs/applications/networking/browsers/chromium/plugins.nix b/pkgs/applications/networking/browsers/chromium/plugins.nix
index e600d134e9c..434bd77b6d1 100644
--- a/pkgs/applications/networking/browsers/chromium/plugins.nix
+++ b/pkgs/applications/networking/browsers/chromium/plugins.nix
@@ -45,11 +45,11 @@ let
 
   flash = stdenv.mkDerivation rec {
     pname = "flashplayer-ppapi";
-    version = "32.0.0.330";
+    version = "32.0.0.344";
 
     src = fetchzip {
       url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
-      sha256 = "08gpx0fq0r1sz5smfdgv4fkfwq1hdijv4dw432d6jdz8lq09y1nk";
+      sha256 = "05ijlgsby9zxx0qs6f3vav1z0p6xr1cg6idl4akxvfmsl6hn6hkq";
       stripRoot = false;
     };
 
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/pkgs/applications/networking/browsers/chromium/upstream-info.nix
index bfc4fd02840..0e939f2fd21 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.nix
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.nix
@@ -1,18 +1,18 @@
 # This file is autogenerated from update.sh in the same directory.
 {
   beta = {
-    sha256 = "0vsykl3gaql8fp1h5007ljds8m8q2n6n34dsbcqqav2008zlks61";
-    sha256bin64 = "1bmszzgmzv7hkczs6kcsa2r8vv6nhg39q1sv74695mr3j3j4bdp8";
-    version = "81.0.4044.17";
+    sha256 = "177hv5jkgpcbi6khk7j883rf3rzzkjmi8cqqpzckaiw7pcwsvyvd";
+    sha256bin64 = "0sicz51d2l3gj70mfpyh5idwarjl19pba5lc6ahznxxqsrjfp80r";
+    version = "81.0.4044.69";
   };
   dev = {
-    sha256 = "0vsykl3gaql8fp1h5007ljds8m8q2n6n34dsbcqqav2008zlks61";
-    sha256bin64 = "0xx4h82w6jklwlk8p2a2qqk2a9vnf004hmgw69i8iwk6l1d9hxfb";
-    version = "81.0.4044.17";
+    sha256 = "0s0072rmg287iijh6wwm9i5a5fsh96qm6nhd13xwbxrvj6pldb7n";
+    sha256bin64 = "0l5ljjz0s5x9727syq4gs5xshl9vs8apvw6xw8il0xy5qax32g85";
+    version = "82.0.4083.0";
   };
   stable = {
-    sha256 = "10myihiyrgnm0ly41k4h8ayl3vv3cpshs3pshpqaba0l8i5r5b9f";
-    sha256bin64 = "0pd4ygmyinaq22lmaqjqi1gs3svnb863mkhcf85dzm1354iz1g9k";
-    version = "80.0.3987.106";
+    sha256 = "07icl3hgg1wjkmz88lbpjf6ll4xyi64spki1nmsy6899jgkxvgjh";
+    sha256bin64 = "0qgp6hv4qj04v6pzfx9ggjvcl1vi6ljjc3cpi4hfr67p4jab40ji";
+    version = "80.0.3987.149";
   };
 }