diff --git a/extra/chromium/.SRCINFO b/extra/chromium/.SRCINFO index adb274079..543e714aa 100644 --- a/extra/chromium/.SRCINFO +++ b/extra/chromium/.SRCINFO @@ -1,6 +1,6 @@ pkgbase = chromium pkgdesc = A web browser built for speed, simplicity, and security - pkgver = 128.0.6613.137 + pkgver = 129.0.6668.42 pkgrel = 1 url = https://www.chromium.org/Home arch = x86_64 @@ -55,15 +55,17 @@ pkgbase = chromium optdepends = kwallet: support for storing passwords in KWallet on Plasma optdepends = upower: Battery Status API support options = !lto - source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-128.0.6613.137.tar.xz + source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-129.0.6668.42.tar.xz source = https://github.com/foutrelis/chromium-launcher/archive/v8/chromium-launcher-8.tar.gz - source = allow-ANGLEImplementation-kVulkan.patch + source = p010-Zero-Copy-for-VA-API-Decoding-for-Vulkan.patch + source = add-feature-to-allow-zero-copy-video-formats.patch source = compiler-rt-adjust-paths.patch source = increase-fortify-level.patch source = use-oauth2-client-switches-as-default.patch - sha256sums = e1d39c170dfdc2627a7b003e11d77f04a578b8e1cfe41e714cdaa345c91f4943 + sha256sums = 1523ad6aaed42a0f507737718a17e76f884b2226d96e21780c2fda9457e4cac2 sha256sums = 213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a - sha256sums = 1a5bc75a90abad153c8eb6dbdce138132a5f11190b0a40c925958a72d706b2aa + sha256sums = 40db59162df2b7a2c0387bd620802f15424f637c09ba305b674fc09410ab21d1 + sha256sums = 713dab4f8c26790c0e4a4c5ce6a9269e90446df5370cc14214a01a363f7afe39 sha256sums = b3de01b7df227478687d7517f61a777450dca765756002c80c4915f271e2d961 sha256sums = d634d2ce1fc63da7ac41f432b1e84c59b7cceabf19d510848a7cff40c8025342 sha256sums = a9b417b96daec33c9059065e15b3a92ae1bf4b59f89d353659b335d9e0379db6 diff --git a/extra/chromium/0001-widevine-support-for-arm.patch b/extra/chromium/0001-widevine-support-for-arm.patch index a39e5cedd..9988baad1 100644 --- a/extra/chromium/0001-widevine-support-for-arm.patch +++ b/extra/chromium/0001-widevine-support-for-arm.patch @@ -1,4 +1,4 @@ -From 6b48d76f7866b5a681646959ffe44365186df95c Mon Sep 17 00:00:00 2001 +From 51bf74f717d74ab647b674a1a48595a122d4d787 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Thu, 18 Feb 2021 19:35:58 -0700 Subject: [PATCH 1/3] widevine support for arm diff --git a/extra/chromium/0002-Run-blink-bindings-generation-single-threaded.patch b/extra/chromium/0002-Run-blink-bindings-generation-single-threaded.patch index 13f461f52..8f19e0b93 100644 --- a/extra/chromium/0002-Run-blink-bindings-generation-single-threaded.patch +++ b/extra/chromium/0002-Run-blink-bindings-generation-single-threaded.patch @@ -1,4 +1,4 @@ -From 56d856d30a5bb8e56d0b28325f3d8ad78aa7eae2 Mon Sep 17 00:00:00 2001 +From 9caf7e9ecac8b8a457e81c4f51e2abe5fb0b3e70 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Tue, 2 Feb 2021 13:58:59 -0700 Subject: [PATCH 2/3] Run blink bindings generation single threaded @@ -9,10 +9,10 @@ When not single threaded this process will eat all the RAM. 1 file changed, 1 insertion(+) diff --git a/third_party/blink/renderer/bindings/BUILD.gn b/third_party/blink/renderer/bindings/BUILD.gn -index b1c8a6458c7c7..0a2fc40a384db 100644 +index 732e344bb97b2..cce7bb433156f 100644 --- a/third_party/blink/renderer/bindings/BUILD.gn +++ b/third_party/blink/renderer/bindings/BUILD.gn -@@ -163,6 +163,7 @@ template("generate_bindings") { +@@ -166,6 +166,7 @@ template("generate_bindings") { outputs = invoker.outputs args = [ diff --git a/extra/chromium/0003-Fix-eu-strip-build-for-newer-GCC.patch b/extra/chromium/0003-Fix-eu-strip-build-for-newer-GCC.patch index f0705ce36..25743d30a 100644 --- a/extra/chromium/0003-Fix-eu-strip-build-for-newer-GCC.patch +++ b/extra/chromium/0003-Fix-eu-strip-build-for-newer-GCC.patch @@ -1,4 +1,4 @@ -From a7894053235761ee41ac1f16cea5667de7103e37 Mon Sep 17 00:00:00 2001 +From 3249e23ea9e28f674892a2b8b4e64dcb568e996a Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 21 Jul 2021 21:37:31 -0600 Subject: [PATCH 3/3] Fix eu-strip build for newer GCC diff --git a/extra/chromium/PKGBUILD b/extra/chromium/PKGBUILD index 8ae398786..44bfa3fe1 100644 --- a/extra/chromium/PKGBUILD +++ b/extra/chromium/PKGBUILD @@ -15,7 +15,7 @@ highmem=1 pkgname=chromium -pkgver=128.0.6613.137 +pkgver=129.0.6668.42 pkgrel=1 _launcher_ver=8 _manual_clone=0 @@ -39,22 +39,24 @@ optdepends=('pipewire: WebRTC desktop sharing under Wayland' options=('!lto') # Chromium adds its own flags for ThinLTO source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$pkgver.tar.xz https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver/chromium-launcher-$_launcher_ver.tar.gz - allow-ANGLEImplementation-kVulkan.patch + p010-Zero-Copy-for-VA-API-Decoding-for-Vulkan.patch + add-feature-to-allow-zero-copy-video-formats.patch compiler-rt-adjust-paths.patch increase-fortify-level.patch use-oauth2-client-switches-as-default.patch 0001-widevine-support-for-arm.patch 0002-Run-blink-bindings-generation-single-threaded.patch 0003-Fix-eu-strip-build-for-newer-GCC.patch) -sha256sums=('e1d39c170dfdc2627a7b003e11d77f04a578b8e1cfe41e714cdaa345c91f4943' +sha256sums=('1523ad6aaed42a0f507737718a17e76f884b2226d96e21780c2fda9457e4cac2' '213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a' - '1a5bc75a90abad153c8eb6dbdce138132a5f11190b0a40c925958a72d706b2aa' + '40db59162df2b7a2c0387bd620802f15424f637c09ba305b674fc09410ab21d1' + '713dab4f8c26790c0e4a4c5ce6a9269e90446df5370cc14214a01a363f7afe39' 'b3de01b7df227478687d7517f61a777450dca765756002c80c4915f271e2d961' 'd634d2ce1fc63da7ac41f432b1e84c59b7cceabf19d510848a7cff40c8025342' 'a9b417b96daec33c9059065e15b3a92ae1bf4b59f89d353659b335d9e0379db6' - '28618102510072556746324583a2a2d98eacc0cff4c5ba79eca807713d993c39' - '2a93b02d6cac6be6ce7de2f17dc4f2ee9e2b44822ad221536a22a1266f2261f6' - '1e6fda49c714b7e09d9e9e53f7a26c0a96504e0351a269832c6a8e1fb5dcab2f') + '4246da8a2d0bd689b6c8a6ce3042e72ec72497ea64ad47ceb92334afa34a27f1' + '123dbf9cc82085242ee4a9bdaf6354257ea8eba993fb45fcb7f407a176c29abd' + '13e866a9f22a90fde979cc11b15b45fca7f00c78ebb55b41610415c24790bc85') if (( _manual_clone )); then source[0]=fetch-chromium-release @@ -140,7 +142,8 @@ prepare() { patch -Np1 -i ../use-oauth2-client-switches-as-default.patch # Upstream fixes - patch -Np1 -i ../allow-ANGLEImplementation-kVulkan.patch + patch -Np1 -i ../p010-Zero-Copy-for-VA-API-Decoding-for-Vulkan.patch + patch -Np1 -i ../add-feature-to-allow-zero-copy-video-formats.patch # Allow libclang_rt.builtins from compiler-rt >= 16 to be used patch -Np1 -i ../compiler-rt-adjust-paths.patch diff --git a/extra/chromium/add-feature-to-allow-zero-copy-video-formats.patch b/extra/chromium/add-feature-to-allow-zero-copy-video-formats.patch new file mode 100644 index 000000000..dd4ab91e6 --- /dev/null +++ b/extra/chromium/add-feature-to-allow-zero-copy-video-formats.patch @@ -0,0 +1,62 @@ +From fb42a91ffae45f6a7c1639ebf0f1622b7c346d1d Mon Sep 17 00:00:00 2001 +From: Robert Mader +Date: Thu, 5 Sep 2024 23:56:20 +0000 +Subject: [PATCH] media: Add feature to allow zero-copy video formats with GL + on Linux + +With EGL formats like NV12 can usually be imported directly from VA-API +and V4L2 decoders. Doing so can improve performance a lot - and in cases +where there is no PP to convert to RGB, not supporting it can break HW +decoding altogether. +Unfortunately allowing it unconditionally could cause regressions in +various scenarios - such as when using GLX or a driver that doesn't +support sampling NV12. + +Thus introduce a feature - disabled by default for now - to make it easy +to enable these formats. + +Note that on Wayland it might be required to disable overlay delegation +with `--disable-features=WaylandOverlayDelegation`. + +Change-Id: I8ee396de5f6d4958278b0f0bd53bfa9a7007c8c7 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5038617 +Reviewed-by: Ted (Chromium) Meyer +Reviewed-by: Andres Calderon Jaramillo +Commit-Queue: Andres Calderon Jaramillo +Cr-Commit-Position: refs/heads/main@{#1351792} +--- + media/mojo/services/gpu_mojo_media_client_linux.cc | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/media/mojo/services/gpu_mojo_media_client_linux.cc b/media/mojo/services/gpu_mojo_media_client_linux.cc +index c592c2e4c2c2..cd86a3253e07 100644 +--- a/media/mojo/services/gpu_mojo_media_client_linux.cc ++++ b/media/mojo/services/gpu_mojo_media_client_linux.cc +@@ -18,6 +18,10 @@ namespace media { + + namespace { + ++BASE_FEATURE(kVaapiVideoDecodeLinuxZeroCopyGL, ++ "VaapiVideoDecodeLinuxZeroCopyGL", ++ base::FEATURE_DISABLED_BY_DEFAULT); ++ + VideoDecoderType GetPreferredLinuxDecoderImplementation() { + // VaapiVideoDecoder flag is required for VaapiVideoDecoder. + if (!base::FeatureList::IsEnabled(kVaapiVideoDecodeLinux)) { +@@ -50,8 +54,15 @@ std::vector GetPreferredRenderableFourccs( + if (gpu_preferences.gr_context_type == gpu::GrContextType::kVulkan) { + renderable_fourccs.emplace_back(Fourcc::NV12); + renderable_fourccs.emplace_back(Fourcc::P010); +- } ++ } else + #endif // BUILDFLAG(ENABLE_VULKAN) ++ // Allow zero-copy formats with GL for testing or in controlled ++ // environments. ++ if (gpu_preferences.gr_context_type == gpu::GrContextType::kGL && ++ base::FeatureList::IsEnabled(kVaapiVideoDecodeLinuxZeroCopyGL)) { ++ renderable_fourccs.emplace_back(Fourcc::NV12); ++ renderable_fourccs.emplace_back(Fourcc::P010); ++ } + + // Support 1-copy argb textures. + // diff --git a/extra/chromium/allow-ANGLEImplementation-kVulkan.patch b/extra/chromium/allow-ANGLEImplementation-kVulkan.patch deleted file mode 100644 index a98cf1c9e..000000000 --- a/extra/chromium/allow-ANGLEImplementation-kVulkan.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 1d408de1538427653f776b5e5e646503d0d0f0c5 Mon Sep 17 00:00:00 2001 -From: Ho Cheung -Date: Fri, 2 Aug 2024 00:10:43 +0000 -Subject: [PATCH] Reland "[ozone+wayland] Allow ANGLEImplementation::kVulkan - when ozone platform is Wayland" - -This reverts commit 49aad997bfc37ab236c4cb593ebc2306960a43f5. - -Reason: This CL has caused failed tests in at -least two tryjobs of Lacros FYI and Linux Tests -(dbg). - -These failed tests seem to be related to the -Vulkan field trial. Now the Vulkan field trial has -been disabled and the related failed tests have -also been suppressed. - -Based on the above, all blockers have been -removed, and we can try to merge this CL again. - -Bug: 334275637,40722838,41392107 -Change-Id: I5fcafff1d3dad431a64c9b429c807c996f6a0d74 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5740783 -Reviewed-by: Kramer Ge -Commit-Queue: Ho Cheung -Reviewed-by: Nick Yamane -Reviewed-by: Vasiliy Telezhnikov -Cr-Commit-Position: refs/heads/main@{#1336353} ---- - ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc -index 051e26171012..dcb947ae88f4 100644 ---- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc -+++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc -@@ -213,6 +213,7 @@ WaylandSurfaceFactory::GetAllowedGLImplementations() { - impls.emplace_back(gl::ANGLEImplementation::kOpenGL); - impls.emplace_back(gl::ANGLEImplementation::kOpenGLES); - impls.emplace_back(gl::ANGLEImplementation::kSwiftShader); -+ impls.emplace_back(gl::ANGLEImplementation::kVulkan); - } - return impls; - } diff --git a/extra/chromium/p010-Zero-Copy-for-VA-API-Decoding-for-Vulkan.patch b/extra/chromium/p010-Zero-Copy-for-VA-API-Decoding-for-Vulkan.patch new file mode 100644 index 000000000..66df84050 --- /dev/null +++ b/extra/chromium/p010-Zero-Copy-for-VA-API-Decoding-for-Vulkan.patch @@ -0,0 +1,73 @@ +From 882f184c471fc8e5c59ead4e4c8eaf06dc7f89da Mon Sep 17 00:00:00 2001 +From: Jianhui Dai +Date: Wed, 4 Sep 2024 01:28:15 +0000 +Subject: [PATCH] vaapi_decoder/linux: P010 Zero-Copy for VA-API Video Decoding + for Vulkan + +This CL adds P010 to the list of renderable formats for Vulkan, enabling +zero-copy video decoding via VA-API. By avoiding the unnecessary +conversion from P010 to NV12, this optimization preserves color depth +and improves overall performance. + +Test on Ubuntu 22.04 for Alder Lake: + Linux Ozone-Wayland Vulkan: +` +chrome --ignore-gpu-blocklist --disable-gpu-driver-bug-workaround +--enable-features=Vulkan,VaapiIgnoreDriverChecks,DefaultANGLEVulkan,VulkanFromANGLE +--use-gl=angle --use-angle=vulkan --ozone-platform=wayland +` + + Linux Ozone-X11 Vulkan: +` +chrome --ignore-gpu-blocklist --disable-gpu-driver-bug-workaround +--enable-features=Vulkan,VaapiIgnoreDriverChecks,DefaultANGLEVulkan,VulkanFromANGLE +--use-gl=angle --use-angle=vulkan --ozone-platform=x11 +` + +HEVC Main 10 10-bit test video: +https://developer.apple.com/videos/play/wwdc2024/10136/ + +Bug: 349428388 +Change-Id: I4a5524d8224982e44a928467bb37a46b8404d402 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5831505 +Reviewed-by: Ted (Chromium) Meyer +Reviewed-by: Andres Calderon Jaramillo +Commit-Queue: Jianhui J Dai +Cr-Commit-Position: refs/heads/main@{#1350537} +--- + .../mojo/services/gpu_mojo_media_client_linux.cc | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/media/mojo/services/gpu_mojo_media_client_linux.cc b/media/mojo/services/gpu_mojo_media_client_linux.cc +index 6c8dcffca050..c592c2e4c2c2 100644 +--- a/media/mojo/services/gpu_mojo_media_client_linux.cc ++++ b/media/mojo/services/gpu_mojo_media_client_linux.cc +@@ -45,20 +45,21 @@ VideoDecoderType GetPreferredLinuxDecoderImplementation() { + std::vector GetPreferredRenderableFourccs( + const gpu::GpuPreferences& gpu_preferences) { + std::vector renderable_fourccs; +- // TODO(crbug.com/349428388): For HEVC Main 10 and VP9 Profile2 10-bit video, +- // the current implementation requires additional VPP to convert the P010 +- // format to a renderable format. This VPP happens on the Vulkan path +- // (P010 -> NV12) and OpenGL path (P010 -> AR24). While this VPP introduces a +- // loss of color depth, it should be optimized for zero-copy path in the +- // future. + #if BUILDFLAG(ENABLE_VULKAN) +- // Support for zero-copy NV12 textures preferentially. ++ // Support for zero-copy NV12/P010 textures preferentially. + if (gpu_preferences.gr_context_type == gpu::GrContextType::kVulkan) { + renderable_fourccs.emplace_back(Fourcc::NV12); ++ renderable_fourccs.emplace_back(Fourcc::P010); + } + #endif // BUILDFLAG(ENABLE_VULKAN) + + // Support 1-copy argb textures. ++ // ++ // TODO(crbug.com/349428388): For VP9 Profile2 and HEVC Main 10 10-bit video, ++ // the current implementation requires additional VPP to convert the NV12/P010 ++ // format to a renderable format AR24. While this VPP introduces a loss of ++ // color depth (P010 -> AR24), it should be optimized for zero-copy path in ++ // the future. + renderable_fourccs.emplace_back(Fourcc::AR24); + + return renderable_fourccs;