From 73b67da1699c7b4581226f877297f235cdbd051e Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Fri, 9 Oct 2020 13:46:15 +0200 Subject: [PATCH] chromium: Disable VA-API by default This is done to avoid driver specific issues and restores the previous behaviour. Like before video acceleration can be enabled without having to rebuild Chromium. --- .../networking/browsers/chromium/common.nix | 9 ++- .../networking/browsers/chromium/default.nix | 6 +- .../enable-vdpau-support-for-nvidia.patch | 65 ------------------- .../enable-video-acceleration-on-linux.patch | 48 -------------- 4 files changed, 7 insertions(+), 121 deletions(-) delete mode 100644 pkgs/applications/networking/browsers/chromium/patches/enable-vdpau-support-for-nvidia.patch delete mode 100644 pkgs/applications/networking/browsers/chromium/patches/enable-video-acceleration-on-linux.patch diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix index b9f6ef4a4b9..663d66870b5 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -161,11 +161,10 @@ let # # ++ optionals (channel == "dev") [ ( githubPatch "" "0000000000000000000000000000000000000000000000000000000000000000" ) ] # ++ optional (versionRange "68" "72") ( githubPatch "" "0000000000000000000000000000000000000000000000000000000000000000" ) - ]; # TODO: VA-API patches (we should be able to drop enable-video-acceleration-on-linux.patch now): - # ++ optionals (useVaapi && versionRange "68" "86") [ # Improvements 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 (useVaapi) [ + # Check for enable-accelerated-video-decode on Linux: + (githubPatch "54deb9811ca9bd2327def5c05ba6987b8c7a0897" "11jvxjlkzz1hm0pvfyr88j7z3zbwzplyl5idkx92l2lzv4459c8d") + ]; postPatch = '' # Required for patchShebangs (unsupported interpreter directive, basename: invalid option -- '*', etc.): diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index d16decfeeda..e4bde512227 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -15,7 +15,7 @@ , enablePepperFlash ? false , enableWideVine ? false , useVaapi ? false # Deprecated, use enableVaapi instead! -, enableVaapi ? false # Disabled by default due to unofficial support and issues on radeon +, enableVaapi ? false # Disabled by default due to unofficial support , useOzone ? false , cupsSupport ? true , pulseSupport ? config.pulseaudio or stdenv.isLinux @@ -152,8 +152,8 @@ let 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"; + (enableVaapi) + "--add-flags --enable-accelerated-video-decode"; in stdenv.mkDerivation { name = "chromium${suffix}-${version}"; inherit version; diff --git a/pkgs/applications/networking/browsers/chromium/patches/enable-vdpau-support-for-nvidia.patch b/pkgs/applications/networking/browsers/chromium/patches/enable-vdpau-support-for-nvidia.patch deleted file mode 100644 index 8d879de7bfd..00000000000 --- a/pkgs/applications/networking/browsers/chromium/patches/enable-vdpau-support-for-nvidia.patch +++ /dev/null @@ -1,65 +0,0 @@ ---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -@@ -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 && -+ buffer_allocation_mode_ != BufferAllocationMode::kWrapVdpau && - !vpp_vaapi_wrapper_) { - vpp_vaapi_wrapper_ = VaapiWrapper::Create( - VaapiWrapper::kVideoProcess, VAProfileNone, -@@ -665,7 +666,8 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers( - PictureBuffer buffer = buffers[i]; - buffer.set_size(requested_pic_size_); - std::unique_ptr 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,12 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() { - - VaapiVideoDecodeAccelerator::BufferAllocationMode - VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { -+ // NVIDIA blobs use VDPAU -+ if (VaapiWrapper::GetImplementationType() == VAImplementation::kNVIDIAVDPAU) { -+ LOG(INFO) << "VA-API driver on VDPAU backend"; -+ return BufferAllocationMode::kWrapVdpau; -+ } -+ - // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT - // |output_mode_| as well. - if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT) ---- 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 VaapiVideoDecodeAccelerator - // Using |client_|s provided PictureBuffers and as many internally - // allocated. - kNormal, -+ kWrapVdpau, - }; - - // 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/enable-video-acceleration-on-linux.patch b/pkgs/applications/networking/browsers/chromium/patches/enable-video-acceleration-on-linux.patch deleted file mode 100644 index bd278633f67..00000000000 --- a/pkgs/applications/networking/browsers/chromium/patches/enable-video-acceleration-on-linux.patch +++ /dev/null @@ -1,48 +0,0 @@ -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 -