diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix index d07da2b3b07a..25ee5462b298 100644 --- a/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix +++ b/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix @@ -24,8 +24,13 @@ , libdrm ? null, wayland ? null, mesa_drivers ? null, libxkbcommon ? null # useOzone # package customization -, useVaapi ? false , useOzone ? false +, useVaapi ? !(useOzone || stdenv.isAarch64) # Built if supported, but disabled in the wrapper +# VA-API TODOs: +# - Ozone: M81 fails to build due to "ozone_platform_gbm = false" +# - Possible solutions: Write a patch to fix the build (wrong gn dependencies) +# or build with minigbm +# - AArch64: Causes serious regressions (https://github.com/NixOS/nixpkgs/pull/85253#issuecomment-614405879) , gnomeSupport ? false, gnome ? null , gnomeKeyringSupport ? false, libgnome-keyring3 ? null , proprietaryCodecs ? true @@ -134,10 +139,10 @@ let libXScrnSaver libXcursor libXtst libGLU libGL pciutils protobuf speechd libXdamage at-spi2-core jre - ] ++ optional gnomeKeyringSupport libgnome-keyring3 + ] ++ optional useVaapi libva + ++ optional gnomeKeyringSupport libgnome-keyring3 ++ optionals gnomeSupport [ gnome.GConf libgcrypt ] ++ optionals cupsSupport [ libgcrypt cups ] - ++ optional useVaapi libva ++ optional pulseSupport libpulseaudio ++ optionals useOzone [ libdrm wayland mesa_drivers libxkbcommon ]; @@ -156,9 +161,9 @@ let # # ++ optionals (channel == "dev") [ ( githubPatch "" "0000000000000000000000000000000000000000000000000000000000000000" ) ] # ++ optional (versionRange "68" "72") ( githubPatch "" "0000000000000000000000000000000000000000000000000000000000000000" ) - ] ++ optionals (useVaapi) ([ - # source: https://aur.archlinux.org/cgit/aur.git/tree/vaapi-fix.patch?h=chromium-vaapi - ./patches/vaapi-fix.patch + ] ++ optionals (useVaapi) ([ # Fixes for the VA-API build: + ./patches/enable-vdpau-support-for-nvidia.patch # https://aur.archlinux.org/cgit/aur.git/tree/vdpau-support.patch?h=chromium-vaapi + ./patches/enable-video-acceleration-on-linux.patch # Can be controlled at runtime (i.e. without rebuilding Chromium) ] ++ optionals (versionRange "81" "82") [ (githubPatch "5b2ff215473e0526b5b24aeff4ad90d369b21c75" "0n00vh8wfpn2ay5fqsxcsx0zadnv7mihm72bcvnrfzh75nzbg902") (githubPatch "98e343ab369e4262511b5fce547728e3e5eefba8" "00wwp653jk0k0yvix00vr7ymgck9dj7fxjwx4nc67ynn84dh6064") diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix index f172e7c09ce2..9d6c7fada709 100644 --- a/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix +++ b/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix @@ -6,14 +6,16 @@ , lib # package customization +# Note: enable* flags should not require full rebuilds (i.e. only affect the wrapper) , channel ? "stable" , gnomeSupport ? false, gnome ? null , gnomeKeyringSupport ? false , proprietaryCodecs ? true , enablePepperFlash ? false , enableWideVine ? false +, useVaapi ? false # Deprecated, use enableVaapi instead! +, enableVaapi ? false # Disabled by default due to unofficial support and issues on radeon , ungoogled ? true -, useVaapi ? false # test video on radeon, before enabling this , useOzone ? false , cupsSupport ? true , pulseSupport ? config.pulseaudio or stdenv.isLinux @@ -21,7 +23,7 @@ }: let - llvmPackages = if channel == "dev" + llvmPackages = if channel != "stable" then llvmPackages_10 else llvmPackages_9; stdenv = llvmPackages.stdenv; @@ -34,9 +36,10 @@ let upstream-info = (callPackage ./update.nix {}).getChannel channel; mkChromiumDerivation = callPackage ./common.nix ({ - inherit gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport useVaapi useOzone ungoogled; + inherit gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport useOzone; + inherit ungoogled; gnChromium = gn; - } // lib.optionalAttrs (channel == "dev") { + } // lib.optionalAttrs (channel != "stable") { # TODO: Remove after we can update gn for the stable channel (backward incompatible changes): gnChromium = gn.overrideAttrs (oldAttrs: { version = "2020-03-23"; @@ -130,6 +133,14 @@ let cp -a ${widevineCdm}/WidevineCdm $out/libexec/chromium/ '' else browser; + + optionalVaapiFlags = if useVaapi # TODO: Remove after 20.09: + then throw '' + Chromium's useVaapi was replaced by enableVaapi and you don't need to pass + "--ignore-gpu-blacklist" anymore (also no rebuilds are required anymore). + '' else lib.optionalString + (!enableVaapi) + "--add-flags --disable-accelerated-video-decode --add-flags --disable-accelerated-video-encode"; in stdenv.mkDerivation { name = "chromium${suffix}-${version}"; inherit version; @@ -149,15 +160,14 @@ in stdenv.mkDerivation { buildCommand = let browserBinary = "${chromiumWV}/libexec/chromium/chromium"; getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")"; - libPath = stdenv.lib.makeLibraryPath ([] - ++ stdenv.lib.optional useVaapi libva - ); + libPath = stdenv.lib.makeLibraryPath [ libva ]; in with stdenv.lib; '' mkdir -p "$out/bin" eval makeWrapper "${browserBinary}" "$out/bin/chromium" \ --add-flags ${escapeShellArg (escapeShellArg commandLineArgs)} \ + ${optionalVaapiFlags} \ ${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled} ed -v -s "$out/bin/chromium" << EOF diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/patches/vaapi-fix.patch b/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-vdpau-support-for-nvidia.patch similarity index 100% rename from pkgs/applications/networking/browsers/ungoogled-chromium/patches/vaapi-fix.patch rename to pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-vdpau-support-for-nvidia.patch diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-video-acceleration-on-linux.patch b/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-video-acceleration-on-linux.patch new file mode 100644 index 000000000000..bd278633f67e --- /dev/null +++ b/pkgs/applications/networking/browsers/ungoogled-chromium/patches/enable-video-acceleration-on-linux.patch @@ -0,0 +1,48 @@ +From b2144fd28e09cd52e7a88a62a9d9b54cf9922f9f Mon Sep 17 00:00:00 2001 +From: Michael Weiss +Date: Tue, 14 Apr 2020 14:16:10 +0200 +Subject: [PATCH] Enable accelerated video decode on Linux + +This will enable accelerated video decode on Linux by default (i.e. +without "--ignore-gpu-blacklist"), but on NixOS we'll provide +"--disable-accelerated-video-decode" and +"--disable-accelerated-video-encode" by default to avoid regressions +(e.g. VA-API doesn't work properly for some radeon drivers). + +Video acceleration can then be enabled via: +chromium.override { enableVaapi = true; } +without rebuilding Chromium. +--- + gpu/config/software_rendering_list.json | 16 ---------------- + 1 file changed, 16 deletions(-) + +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index 22712bdbf38f..a06dd19a50e4 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -336,22 +336,6 @@ + ] + }, + { +- "id": 48, +- "description": "Accelerated video decode is unavailable on Linux", +- "cr_bugs": [137247, 1032907], +- "os": { +- "type": "linux" +- }, +- "exceptions": [ +- { +- "machine_model_name": ["Chromecast"] +- } +- ], +- "features": [ +- "accelerated_video_decode" +- ] +- }, +- { + "id": 50, + "description": "Disable VMware software renderer on older Mesa", + "cr_bugs": [145531, 332596, 571899, 629434], +-- +2.11.0 + diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix index 434bd77b6d18..1dd9baa628ab 100644 --- a/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix +++ b/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix @@ -45,11 +45,11 @@ let flash = stdenv.mkDerivation rec { pname = "flashplayer-ppapi"; - version = "32.0.0.344"; + version = "32.0.0.363"; src = fetchzip { url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz"; - sha256 = "05ijlgsby9zxx0qs6f3vav1z0p6xr1cg6idl4akxvfmsl6hn6hkq"; + sha256 = "0znk8an892mykgbz56hyv3gz65vc9mhb3vn96c6bsvicwl1fn460"; stripRoot = false; }; diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix index 9b5c76f53429..f6f3c06e9376 100644 --- a/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix +++ b/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix @@ -1,6 +1,6 @@ { - "81.0.4044.92" = { - rev = "81.0.4044.92-2"; - sha256 = "071a33idn2zcix6z8skn7y85mhb9w5s0bh0fvrjm269y7cmjrh3l"; + "81.0.4044.122" = { + rev = "81.0.4044.122-2"; + sha256 = "0bbr4a2gkgm3ykdgpj8x58sd3dwam6qkifhzfs2997681g7b2v2q"; }; } diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.nix index c5f9d60122dc..77505b47d857 100644 --- a/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.nix +++ b/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.nix @@ -1,18 +1,18 @@ # This file is autogenerated from update.sh in the same directory. { beta = { - sha256 = "0i0szd749ihb08rxnsmsbxq75b6x952wpk94jwc0ncv6gb83zkx2"; - sha256bin64 = "1y70kmfz9nv507b0zdda7zfk2ac9qh9m2gq00aphdmzd0al7skj8"; - version = "81.0.4044.92"; + sha256 = "1s16wl101yabq0l7w0q50lxkr2gn090pcaj6l5sj6g5xvi9lhgbf"; + sha256bin64 = "0k6fsqlpiwp9vds83hb3cg9xf74hqgbfdm3ijyad2rmwc5rqk0ax"; + version = "83.0.4103.14"; }; dev = { - sha256 = "1rydvjmv62zj95sf0fgsyipqz2hphbxm60y8q0813wq9ym35d4yy"; - sha256bin64 = "1m6740lw7xjjp1lplwp9ii4d3l7dfa9jrv5bysm4ar5pb9kywrai"; - version = "83.0.4100.3"; + sha256 = "0djppzwzpfyyfjb1mhy5wws2379m3wpzyk2x3kw5nd0mdz35hbny"; + sha256bin64 = "1wg55qhfvd5zvigjl6496za81mh9b2c5da53zy07bk8wj91ly8pf"; + version = "84.0.4115.5"; }; stable = { - sha256 = "0i0szd749ihb08rxnsmsbxq75b6x952wpk94jwc0ncv6gb83zkx2"; - sha256bin64 = "1ig899cpahw1xfhdff5xj6w4k8jja5smxvrcbw6b0jcjmawdrf72"; - version = "81.0.4044.92"; + sha256 = "0ahqh3vmzbpai4xwn7qybgw9phc8ssjdvfc7384mxqk9swqgv7qg"; + sha256bin64 = "0gpgim244594m35qwf625blwdqgjbp4qr846wq75a9a9zqwqs05w"; + version = "81.0.4044.122"; }; }