diff options
author | Daniel Playfair Cal | 2019-02-20 21:25:02 +1100 |
---|---|---|
committer | Daniel Playfair Cal | 2019-02-21 09:42:43 +1100 |
commit | a5bfa509125d36190b1e3e02411e8754d2850f24 (patch) | |
tree | a85daef4da083beb886f7c2332a4becf147c934d | |
download | aur-a5bfa509125d36190b1e3e02411e8754d2850f24.tar.gz |
Initialise based on chromium 72.0.3626.109-1
chromium-ozone 72.0.3626.81-1
-rw-r--r-- | .SRCINFO | 89 | ||||
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | PKGBUILD | 274 | ||||
-rw-r--r-- | chromium-drirc-disable-10bpc-color-configs.conf | 15 | ||||
-rw-r--r-- | chromium-enable-mojo-video-decoders-by-default.patch | 104 | ||||
-rw-r--r-- | chromium-skia-harmony.patch | 13 | ||||
-rw-r--r-- | chromium-system-icu.patch | 19 | ||||
-rw-r--r-- | chromium-vaapi-fix-the-VA_CHECK_VERSION.patch | 74 | ||||
-rw-r--r-- | chromium-vaapi-relax-the-version-check-for-VA-API.patch | 62 | ||||
-rw-r--r-- | chromium-vaapi.patch | 116 | ||||
-rw-r--r-- | chromium-webrtc-missing-header.patch | 10 | ||||
-rw-r--r-- | chromium-widevine.patch | 22 | ||||
-rw-r--r-- | chromium.install | 16 |
13 files changed, 818 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..313a1431d3ef --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,89 @@ +pkgbase = chromium-ozone + pkgdesc = Chromium built with patches for wayland support via Ozone + pkgver = 72.0.3626.81 + pkgrel = 1 + url = https://www.chromium.org/Home + install = chromium.install + arch = x86_64 + license = BSD + makedepends = python + makedepends = python2 + makedepends = gperf + makedepends = yasm + makedepends = mesa + makedepends = ninja + makedepends = nodejs + makedepends = git + makedepends = clang + makedepends = lld + makedepends = gn + makedepends = java-runtime-headless + depends = gtk3 + depends = nss + depends = alsa-lib + depends = xdg-utils + depends = libxss + depends = libcups + depends = libgcrypt + depends = ttf-font + depends = systemd + depends = dbus + depends = libpulse + depends = pciutils + depends = json-glib + depends = libva + depends = desktop-file-utils + depends = hicolor-icon-theme + depends = icu + depends = libxml2 + depends = fontconfig + depends = harfbuzz + depends = libjpeg + depends = re2 + depends = snappy + depends = ffmpeg + depends = flac + depends = libwebp + depends = minizip + depends = libxslt + depends = freetype2 + depends = opus + optdepends = pepper-flash: support for Flash content + optdepends = kdialog: needed for file dialogs in KDE + optdepends = gnome-keyring: for storing passwords in GNOME keyring + optdepends = kwallet: for storing passwords in KWallet + provides = chromium + conflicts = chromium + replaces = chromium-vaapi + replaces = chromium-vaapi-bin + source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-72.0.3626.81.tar.xz + source = chromium-launcher-6.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v6.tar.gz + source = chromium-drirc-disable-10bpc-color-configs.conf + source = chromium-system-icu.patch + source = chromium-webrtc-missing-header.patch + source = chromium-vaapi.patch + source = chromium-vaapi-relax-the-version-check-for-VA-API.patch + source = chromium-enable-mojo-video-decoders-by-default.patch + source = chromium-vaapi-fix-the-VA_CHECK_VERSION.patch + source = chromium-widevine.patch + source = chromium-skia-harmony.patch + source = chromium-ozone-wayland.patch::https://github.com/mirror/chromium/compare/36f8ce7e1dc05b379a1de75320ebd5d50bdc2fab...Igalia:da646d2b8e02640cc488bf470b0a9177cd262422.patch + source = chromium-algorithm-header.patch::https://github.com/chromium/chromium/commit/6c0254a78043e32441dbc2e6d4893590dd0d1953.patch + source = chromium-vaapi-build.patch::https://github.com/Igalia/chromium/commit/cdb2e638d4488936c80a2c1b506eecf95ffbee02.patch + sha256sums = dfe89fe389008e6d2098099948d10774989d2f3e8dca6ace78ea4ec636dd8006 + sha256sums = 04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1 + sha256sums = babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb + sha256sums = e2d284311f49c529ea45083438a768db390bde52949995534034d2a814beab89 + sha256sums = 63cbed7d7af327c17878a2066c303f106ff08636372721845131f7ff13d87b44 + sha256sums = e87ede45edf39ac19e56ac1ae49c9d1f5f5130e5838bcbb4c3d4fb16e55575c0 + sha256sums = 07fcf5d25114c7335582f117090b5e0bd148aca69044d4fe25c66b4c52dcd2a6 + sha256sums = 669a9ad4773d182a06ee729008a60aeadddae92f1a0077b3811e11f292c8d4ff + sha256sums = 0bd750255163bfb1bedaf97c1cdb313f42bd9e6e52243c6e68494b6e0ffb84bf + sha256sums = d081f2ef8793544685aad35dea75a7e6264a2cb987ff3541e6377f4a3650a28b + sha256sums = 5887f78b55c4ecbbcba5930f3f0bb7bc0117c2a41c2f761805fcf7f46f1ca2b3 + sha256sums = 9e3c841e325b473301e7024eafa121cbb00421eb1192b3673bbb9037909a74bc + sha256sums = 5662e88f7bd1a36848d3ecf166e9a282b7fa3858bd1261d582c97654af0c1348 + sha256sums = 4ed0ac74fef8b63fa5dfd0de02a02cc4a7667898a90ec5365651645777934c14 + +pkgname = chromium-ozone + diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..b771a020ed86 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +src/ +pkg/ +chromium-*/ +chromium-* diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..0252580010a5 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,274 @@ +# Maintainer: Daniel Playfair Cal <daniel.playfair.cal@gmail.com> +# Contributor: Evangelos Foutras <evangelos@foutrelis.com> +# Contributor: Pierre Schmitz <pierre@archlinux.de> +# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com> +# Contributor: Daniel J Griffiths <ghost1227@archlinux.us> + +pkgname=chromium-ozone +pkgver=72.0.3626.81 +pkgrel=1 +_launcher_ver=6 +_release_sha=36f8ce7e1dc05b379a1de75320ebd5d50bdc2fab +_igalia_sha=da646d2b8e02640cc488bf470b0a9177cd262422 +pkgdesc="Chromium built with patches for wayland support via Ozone" +arch=('x86_64') +url="https://www.chromium.org/Home" +license=('BSD') +depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt' + 'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' 'libva' + 'desktop-file-utils' 'hicolor-icon-theme') +provides=('chromium') +conflicts=('chromium') +makedepends=('python' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git' + 'clang' 'lld' 'gn' 'java-runtime-headless') +optdepends=('pepper-flash: support for Flash content' + 'kdialog: needed for file dialogs in KDE' + 'gnome-keyring: for storing passwords in GNOME keyring' + 'kwallet: for storing passwords in KWallet') +replaces=('chromium-vaapi' 'chromium-vaapi-bin') +install=chromium.install +source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$pkgver.tar.xz + chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz + chromium-drirc-disable-10bpc-color-configs.conf + chromium-system-icu.patch + chromium-webrtc-missing-header.patch + chromium-vaapi.patch + chromium-vaapi-relax-the-version-check-for-VA-API.patch + chromium-enable-mojo-video-decoders-by-default.patch + chromium-vaapi-fix-the-VA_CHECK_VERSION.patch + chromium-widevine.patch + chromium-skia-harmony.patch + chromium-ozone-wayland.patch::https://github.com/mirror/chromium/compare/${_release_sha}...Igalia:${_igalia_sha}.patch + chromium-algorithm-header.patch::https://github.com/chromium/chromium/commit/6c0254a78043e32441dbc2e6d4893590dd0d1953.patch + chromium-vaapi-build.patch::https://github.com/Igalia/chromium/commit/cdb2e638d4488936c80a2c1b506eecf95ffbee02.patch) +sha256sums=('dfe89fe389008e6d2098099948d10774989d2f3e8dca6ace78ea4ec636dd8006' + '04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1' + 'babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb' + 'e2d284311f49c529ea45083438a768db390bde52949995534034d2a814beab89' + '63cbed7d7af327c17878a2066c303f106ff08636372721845131f7ff13d87b44' + 'e87ede45edf39ac19e56ac1ae49c9d1f5f5130e5838bcbb4c3d4fb16e55575c0' + '07fcf5d25114c7335582f117090b5e0bd148aca69044d4fe25c66b4c52dcd2a6' + '669a9ad4773d182a06ee729008a60aeadddae92f1a0077b3811e11f292c8d4ff' + '0bd750255163bfb1bedaf97c1cdb313f42bd9e6e52243c6e68494b6e0ffb84bf' + 'd081f2ef8793544685aad35dea75a7e6264a2cb987ff3541e6377f4a3650a28b' + '5887f78b55c4ecbbcba5930f3f0bb7bc0117c2a41c2f761805fcf7f46f1ca2b3' + '9e3c841e325b473301e7024eafa121cbb00421eb1192b3673bbb9037909a74bc' + '5662e88f7bd1a36848d3ecf166e9a282b7fa3858bd1261d582c97654af0c1348' + '4ed0ac74fef8b63fa5dfd0de02a02cc4a7667898a90ec5365651645777934c14') + +# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py +# Keys are the names in the above script; values are the dependencies in Arch +declare -gA _system_libs=( + [ffmpeg]=ffmpeg + [flac]=flac + [fontconfig]=fontconfig + [freetype]=freetype2 + [harfbuzz-ng]=harfbuzz + [icu]=icu + [libdrm]= + [libjpeg]=libjpeg + #[libpng]=libpng # https://crbug.com/752403#c10 + #[libvpx]=libvpx # needs unreleased libvpx + [libwebp]=libwebp + [libxml]=libxml2 + [libxslt]=libxslt + [opus]=opus + [re2]=re2 + [snappy]=snappy + [yasm]= + [zlib]=minizip +) +_unwanted_bundled_libs=( + ${!_system_libs[@]} + ${_system_libs[libjpeg]+libjpeg_turbo} +) +depends+=(${_system_libs[@]}) + +# Google API keys (see https://www.chromium.org/developers/how-tos/api-keys) +# Note: These are for Arch Linux use ONLY. For your own distribution, please +# get your own set of keys. +_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM +_google_default_client_id=413772536636.apps.googleusercontent.com +_google_default_client_secret=0ZChLK6AxeA3Isu96MkwqDR4 + +prepare() { + cd "$srcdir/chromium-$pkgver" + + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py + + # https://crbug.com/893950 + sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \ + third_party/blink/renderer/core/xml/*.cc \ + third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \ + third_party/libxml/chromium/libxml_utils.cc + + # Enable VAAPI on Linux + patch -Np1 -i ../chromium-vaapi.patch + patch -Np1 -i ../chromium-vaapi-relax-the-version-check-for-VA-API.patch + patch -Np1 -i ../chromium-enable-mojo-video-decoders-by-default.patch + patch -Np1 -i ../chromium-vaapi-fix-the-VA_CHECK_VERSION.patch + + # Load Widevine CDM if available + patch -Np1 -i ../chromium-widevine.patch + + # https://crbug.com/skia/6663#c10 + patch -Np0 -i ../chromium-skia-harmony.patch + + # https://webrtc.googlesource.com/src.git/+/3e70781361ed + patch -Np0 -i ../chromium-webrtc-missing-header.patch + + # https://bugs.gentoo.org/661880#c21 + patch -Np1 -i ../chromium-system-icu.patch + + # https://github.com/mirror/chromium/compare/36f8ce7e1dc05b379a1de75320ebd5d50bdc2fab...Igalia:ozone-wayland-stable/72.0.3626.81.patch + patch -Np1 -i ../chromium-ozone-wayland.patch + + # https://chromium-review.googlesource.com/c/chromium/src/+/1454356 + patch -Np1 -i ../chromium-algorithm-header.patch + + # https://github.com/Igalia/chromium/issues/511 + patch -Np1 -i ../chromium-vaapi-build.patch + + # Remove compiler flags not supported by our system clang + sed -i \ + -e '/"-Wno-defaulted-function-deleted"/d' \ + build/config/compiler/BUILD.gn + + # Force script incompatible with Python 3 to use /usr/bin/python2 + sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py + + mkdir -p third_party/node/linux/node-linux-x64/bin + ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ + + # Remove bundled libraries for which we will use the system copies; this + # *should* do what the remove_bundled_libraries.py script does, with the + # added benefit of not having to list all the remaining libraries + local _lib + for _lib in ${_unwanted_bundled_libs[@]}; do + find "third_party/$_lib" -type f \ + \! -path "third_party/$_lib/chromium/*" \ + \! -path "third_party/$_lib/google/*" \ + \! -path 'third_party/yasm/run_yasm.py' \ + \! -regex '.*\.\(gn\|gni\|isolate\)' \ + -delete + done + + python2 build/linux/unbundle/replace_gn_files.py \ + --system-libraries "${!_system_libs[@]}" +} + +build() { + make -C chromium-launcher-$_launcher_ver + + cd "$srcdir/chromium-$pkgver" + + export CC=clang + export CXX=clang++ + export AR=ar + export NM=nm + + if check_buildoption ccache y; then + # Avoid falling back to preprocessor mode when sources contain time macros + export CCACHE_SLOPPINESS=time_macros + export CC="ccache $CC" + export CXX="ccache $CXX" + fi + + local _flags=( + 'custom_toolchain="//build/toolchain/linux/unbundle:default"' + 'host_toolchain="//build/toolchain/linux/unbundle:default"' + 'clang_use_chrome_plugins=false' + 'is_official_build=true' # implies is_cfi=true on x86_64 + 'treat_warnings_as_errors=false' + 'fieldtrial_testing_like_official_build=true' + 'ffmpeg_branding="Chrome"' + 'proprietary_codecs=true' + 'link_pulseaudio=true' + 'use_gnome_keyring=false' + 'use_sysroot=false' + 'linux_use_bundled_binutils=false' + 'use_custom_libcxx=false' + 'enable_hangout_services_extension=true' + 'enable_widevine=true' + 'use_ozone=true' + 'use_xkbcommon=true' + 'use_system_minigbm=true' + 'use_vaapi=false' + 'use_jumbo_build=true' + 'enable_nacl=false' + 'enable_swiftshader=false' + "google_api_key=\"${_google_api_key}\"" + "google_default_client_id=\"${_google_default_client_id}\"" + "google_default_client_secret=\"${_google_default_client_secret}\"" + ) + + # Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn) + CFLAGS+=' -Wno-builtin-macro-redefined' + CXXFLAGS+=' -Wno-builtin-macro-redefined' + CPPFLAGS+=' -D__DATE__= -D__TIME__= -D__TIMESTAMP__=' + + if check_option strip y; then + _flags+=('symbol_level=0') + + # Mimic exclude_unwind_tables=true + CFLAGS+=' -fno-unwind-tables -fno-asynchronous-unwind-tables' + CXXFLAGS+=' -fno-unwind-tables -fno-asynchronous-unwind-tables' + CPPFLAGS+=' -DNO_UNWIND_TABLES' + fi + + gn gen out/Release --args="${_flags[*]}" --script-executable=/usr/bin/python2 + ninja -C out/Release chrome chrome_sandbox chromedriver +} + +package() { + cd chromium-launcher-$_launcher_ver + make PREFIX=/usr DESTDIR="$pkgdir" install + install -Dm644 LICENSE \ + "$pkgdir/usr/share/licenses/chromium/LICENSE.launcher" + + cd "$srcdir/chromium-$pkgver" + + install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium" + install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox" + ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver" + + install -Dm644 ../chromium-drirc-disable-10bpc-color-configs.conf \ + "$pkgdir/usr/share/drirc.d/10-chromium.conf" + + install -Dm644 chrome/installer/linux/common/desktop.template \ + "$pkgdir/usr/share/applications/chromium.desktop" + install -Dm644 chrome/app/resources/manpage.1.in \ + "$pkgdir/usr/share/man/man1/chromium.1" + sed -i \ + -e "s/@@MENUNAME@@/Chromium/g" \ + -e "s/@@PACKAGE@@/chromium/g" \ + -e "s/@@USR_BIN_SYMLINK_NAME@@/chromium/g" \ + "$pkgdir/usr/share/applications/chromium.desktop" \ + "$pkgdir/usr/share/man/man1/chromium.1" + + cp \ + out/Release/{chrome_{100,200}_percent,resources}.pak \ + out/Release/{*.bin,chromedriver} \ + "$pkgdir/usr/lib/chromium/" + install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak + + if [[ -z ${_system_libs[icu]+set} ]]; then + cp out/Release/icudtl.dat "$pkgdir/usr/lib/chromium/" + fi + + for size in 22 24 48 64 128 256; do + install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \ + "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" + done + + for size in 16 32; do + install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \ + "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" + done + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE" +} + +# vim:set ts=2 sw=2 et: diff --git a/chromium-drirc-disable-10bpc-color-configs.conf b/chromium-drirc-disable-10bpc-color-configs.conf new file mode 100644 index 000000000000..ef836b32222e --- /dev/null +++ b/chromium-drirc-disable-10bpc-color-configs.conf @@ -0,0 +1,15 @@ +<!-- + +Disable 10 bpc color configs; fixes VAAPI playback. + +https://bugs.freedesktop.org/show_bug.cgi?id=106490 + +--> + +<driconf> + <device> + <application name="Chromium" executable="chromium"> + <option name="allow_rgb10_configs" value="false" /> + </application> + </device> +</driconf> diff --git a/chromium-enable-mojo-video-decoders-by-default.patch b/chromium-enable-mojo-video-decoders-by-default.patch new file mode 100644 index 000000000000..9f8ba89e6c4c --- /dev/null +++ b/chromium-enable-mojo-video-decoders-by-default.patch @@ -0,0 +1,104 @@ +From 31225b9c5f3f685d65f742dc129241c30c32157c Mon Sep 17 00:00:00 2001 +From: Julien Isorce <julien.isorce@chromium.org> +Date: Sat, 15 Dec 2018 01:02:18 +0000 +Subject: [PATCH] Enable mojo video decoders by default on Linux desktop if + use_vaapi is true + +Already the case for ChromeOS, Mac and Win. And run the service +in the GPU process too. Except that here the gn arg use_vaapi +has to be true as well. + +Note that this CL does not change the following: + - the gn arg 'use_vaapi' is still false by default on Linux, + see media/gpu/args.gni + - 'accelerated_video_decode' is still black listed on Linux, + see entry 48 in gpu/config/software_rendering_list.json + - it is still not possible to enable hw video decode from + about:flags, see chrome/browser/about_flags.cc + +Also note that with this CL the ffmpeg and libvpx video decoders +are still selected thanks to media::DecoderSelector::SelectDecoder +in case vaapi fails to initialize. + +Also see https://chromium-review.googlesource.com/c/chromium/src/+/1225275/ +which was very similar but for ChromeOS. + +Tested on Linux desktop with gn args: + - use_vaapi = true (default is false) + ./out/release/chrome --ignore-gpu-blacklist --use-gl=desktop url_to_vp9_video + ./out/release/chrome --ignore-gpu-blacklist --use-gl=egl url_to_vp9_video + -> MojoVideoDecoder was in use and VaapiVideoDecodeAccelerator runing in the + GPU process, through MojoVideoDecoderService + + +Bug: 522298 +Change-Id: Ia19f9f3edc0af488a477a16001b7de4f4818b3b2 +Reviewed-on: https://chromium-review.googlesource.com/c/1370717 +Reviewed-by: Dan Sanders <sandersd@chromium.org> +Commit-Queue: Julien Isorce <julien.isorce@chromium.org> +Cr-Commit-Position: refs/heads/master@{#616901} +--- + media/media_options.gni | 9 ++++++--- + media/mojo/services/gpu_mojo_media_client.cc | 5 +++-- + 2 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/media/media_options.gni b/media/media_options.gni +index 46eaa58181..6e338f651b 100644 +--- a/media/media_options.gni ++++ b/media/media_options.gni +@@ -5,6 +5,7 @@ + import("//build/config/chrome_build.gni") + import("//build/config/chromecast_build.gni") + import("//build/config/features.gni") ++import("//media/gpu/args.gni") + import("//testing/libfuzzer/fuzzer_test.gni") + + # Do not expand this list without double-checking with OWNERS, this is a list of +@@ -129,8 +130,9 @@ declare_args() { + # |mojo_media_services|). When enabled, selected mojo paths will be enabled in + # the media pipeline and corresponding services will hosted in the selected + # remote process (e.g. "utility" process, see |mojo_media_host|). +- enable_mojo_media = is_android || is_chromecast || is_chromeos || is_mac || +- is_win || enable_library_cdms ++ enable_mojo_media = ++ is_android || is_chromecast || is_chromeos || is_mac || is_win || ++ enable_library_cdms || (is_desktop_linux && use_vaapi) + + # Enable the TestMojoMediaClient to be used in mojo MediaService. This is for + # testing only and will override the default platform MojoMediaClient, if any. +@@ -200,7 +202,8 @@ if (enable_mojo_media) { + ] + _default_mojo_media_host = "gpu" + } +- } else if (is_chromeos || is_mac || is_win) { ++ } else if (is_chromeos || is_mac || is_win || ++ (is_desktop_linux && use_vaapi)) { + _default_mojo_media_services = [ "video_decoder" ] + _default_mojo_media_host = "gpu" + } +diff --git a/media/mojo/services/gpu_mojo_media_client.cc b/media/mojo/services/gpu_mojo_media_client.cc +index 75f5e611c7..f056e1b315 100644 +--- a/media/mojo/services/gpu_mojo_media_client.cc ++++ b/media/mojo/services/gpu_mojo_media_client.cc +@@ -54,7 +54,7 @@ namespace media { + namespace { + + #if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_MACOSX) || \ +- defined(OS_WIN) ++ defined(OS_WIN) || defined(OS_LINUX) + gpu::CommandBufferStub* GetCommandBufferStub( + base::WeakPtr<MediaGpuChannelManager> media_gpu_channel_manager, + base::UnguessableToken channel_token, +@@ -148,7 +148,8 @@ std::unique_ptr<VideoDecoder> GpuMojoMediaClient::CreateVideoDecoder( + android_overlay_factory_cb_, std::move(request_overlay_info_cb), + std::make_unique<VideoFrameFactoryImpl>(gpu_task_runner_, + std::move(get_stub_cb))); +-#elif defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) ++#elif defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) || \ ++ defined(OS_LINUX) + std::unique_ptr<VideoDecoder> vda_video_decoder = VdaVideoDecoder::Create( + task_runner, gpu_task_runner_, media_log->Clone(), target_color_space, + gpu_preferences_, gpu_workarounds_, +-- +2.20.1 + diff --git a/chromium-skia-harmony.patch b/chromium-skia-harmony.patch new file mode 100644 index 000000000000..949c8f020ce3 --- /dev/null +++ b/chromium-skia-harmony.patch @@ -0,0 +1,13 @@ +--- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2019-01-20 10:54:56.415239030 +0000 ++++ third_party/skia/src/ports/SkFontHost_FreeType.cpp 2019-01-20 10:55:05.695307733 +0000 +@@ -121,8 +121,8 @@ public: + : fGetVarDesignCoordinates(nullptr) + , fGetVarAxisFlags(nullptr) + , fLibrary(nullptr) +- , fIsLCDSupported(false) +- , fLCDExtra(0) ++ , fIsLCDSupported(true) ++ , fLCDExtra(2) + { + if (FT_New_Library(&gFTMemory, &fLibrary)) { + return; diff --git a/chromium-system-icu.patch b/chromium-system-icu.patch new file mode 100644 index 000000000000..23dde5d712a7 --- /dev/null +++ b/chromium-system-icu.patch @@ -0,0 +1,19 @@ +diff --git a/third_party/blink/renderer/platform/text/character_property_data.h b/third_party/blink/renderer/platform/text/character_property_data.h +index 28fb6a9..bb4dbd7 100644 +--- a/third_party/blink/renderer/platform/text/character_property_data.h ++++ b/third_party/blink/renderer/platform/text/character_property_data.h +@@ -244,10 +244,12 @@ static const UChar32 kIsHangulRanges[] = { + 0xD7B0, 0xD7FF, + // Halfwidth Hangul Jamo + // https://www.unicode.org/charts/nameslist/c_FF00.html +- 0xFFA0, 0xFFDC, ++ 0xFFA0, 0xFFDB, + }; + +-static const UChar32 kIsHangulArray[] = {}; ++static const UChar32 kIsHangulArray[] = { ++ 0xFFDC, ++}; + + #if !defined(USING_SYSTEM_ICU) + // Freezed trie tree, see character_property_data_generator.cc. diff --git a/chromium-vaapi-fix-the-VA_CHECK_VERSION.patch b/chromium-vaapi-fix-the-VA_CHECK_VERSION.patch new file mode 100644 index 000000000000..d82fa52fc1cc --- /dev/null +++ b/chromium-vaapi-fix-the-VA_CHECK_VERSION.patch @@ -0,0 +1,74 @@ +From 674fb0486a1b525cb850530c4cdc79506338bd37 Mon Sep 17 00:00:00 2001 +From: Azhar Shaikh <azhar.shaikh@intel.com> +Date: Fri, 11 Jan 2019 07:44:38 +0000 +Subject: [PATCH] media/gpu/vaapi: Fix the VA_CHECK_VERSION + +commit 6f1309ef8fe109 ("media/gpu/vaapi: Relax the version +check for VA-API") added the VA_CHECK_VERSION to relax the +VA-API version check. But it still does the same thing as +the previous check. VA_CHECK_VERSION will return 'true', only +when the VA-API version is greater than or equal to the +parameters passed to it. So in this case when the major and +minor version were passed from vaInitialize() output, it did +the same strict check as earlier. When trying to update libva +to a newer version, there will still be a mismatch, since +vaInitialize() would return the updated/newer libva version +installed on the system, but the chromium would still be built +with older version (libva-2.1.0 as of now). +To fix this and actually relax the check, make sure the system +version of libva is greater than the libva version with which +the browser is built, since libva is backward compatible. This +will allow any future libva updates without breaking existing code. + +Fixes: 6f1309ef8fe109 ("media/gpu/vaapi: Relax the version check for VA-API") + +Bug: 905814 +TEST=Below scenarios were tested and h/w acceleration is working successfully. +TEST=Build chromium with libva-2.3.0 and system version 2.3.0 +TEST=Build chromium with libva-2.1.0 and system version 2.3.0 +TEST=Build chromium with libva 2.1.0 and system version 2.1.0 + +Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com> +Change-Id: I1ec14aabed21b7d6b6fc55080bbac17233c40ec0 +Reviewed-on: https://chromium-review.googlesource.com/c/1376716 +Commit-Queue: Alexandre Courbot <acourbot@chromium.org> +Reviewed-by: Alexandre Courbot <acourbot@chromium.org> +Reviewed-by: Miguel Casas <mcasas@chromium.org> +Cr-Commit-Position: refs/heads/master@{#621940} +--- + media/gpu/vaapi/vaapi_wrapper.cc | 19 ++++++++++--------- + 1 file changed, 10 insertions(+), 9 deletions(-) + +diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc +index 4921aabf64..93d7c98b80 100644 +--- a/media/gpu/vaapi/vaapi_wrapper.cc ++++ b/media/gpu/vaapi/vaapi_wrapper.cc +@@ -337,15 +337,16 @@ bool VADisplayState::InitializeOnce() { + << va_vendor_string_; + + // The VAAPI version is determined from what is loaded on the system by +- // calling vaInitialize(). We want a runtime evaluation of libva version, +- // of what is loaded on the system, with, what browser is compiled with. +- // Also since the libva is now ABI-compatible, relax the version check +- // which helps in upgrading the libva, without breaking any existing +- // functionality. +- if (!VA_CHECK_VERSION(major_version, minor_version, 0)) { +- LOG(ERROR) << "This build of Chromium requires VA-API version " +- << VA_MAJOR_VERSION << "." << VA_MINOR_VERSION +- << ", system version: " << major_version << "." << minor_version; ++ // calling vaInitialize(). Since the libva is now ABI-compatible, relax the ++ // version check which helps in upgrading the libva, without breaking any ++ // existing functionality. Make sure the system version is not older than ++ // the version with which the chromium is built since libva is only ++ // guaranteed to be backward (and not forward) compatible. ++ if (VA_MAJOR_VERSION > major_version || ++ (VA_MAJOR_VERSION == major_version && VA_MINOR_VERSION > minor_version)) { ++ LOG(ERROR) << "The system version " << major_version << "." << minor_version ++ << " should be greater than or equal to " ++ << VA_MAJOR_VERSION << "." << VA_MINOR_VERSION; + return false; + } + return true; +-- +2.20.1 + diff --git a/chromium-vaapi-relax-the-version-check-for-VA-API.patch b/chromium-vaapi-relax-the-version-check-for-VA-API.patch new file mode 100644 index 000000000000..b35cae3d0a3a --- /dev/null +++ b/chromium-vaapi-relax-the-version-check-for-VA-API.patch @@ -0,0 +1,62 @@ +From 6f1309ef8fe10965e4d0018b4f1b80ac6deccdaa Mon Sep 17 00:00:00 2001 +From: Azhar Shaikh <azhar.shaikh@intel.com> +Date: Fri, 30 Nov 2018 23:11:57 +0000 +Subject: [PATCH] media/gpu/vaapi: Relax the version check for VA-API + +Since the newer versions of VA-API are ABI compatible, relax the +version checks for VA-API, by using VA_CHECK_VERSION(). +This will help in updating the libva to the latest releases, +while still supporting the old versions, till the new version of +libva is merged and picked by the builds. Thus ensuring that +hardware accleration is not broken while updating the libva. + +Bug: 905814 +TEST=libva-2.3.0 and libva-2.1.0 are able to do hardware acceleration. + +Suggested-by: Alexandre Courbot <acourbot@chromium.org> +Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com> +Change-Id: I510549f72290d20676927eeeeb89a87199c062af +Reviewed-on: https://chromium-review.googlesource.com/c/1352519 +Reviewed-by: Alexandre Courbot <acourbot@chromium.org> +Reviewed-by: Hirokazu Honda <hiroh@chromium.org> +Commit-Queue: Miguel Casas <mcasas@chromium.org> +Cr-Commit-Position: refs/heads/master@{#612832} +--- + AUTHORS | 1 + + media/gpu/vaapi/vaapi_wrapper.cc | 8 +++++++- + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/AUTHORS b/AUTHORS +index 567fe15a60..ff42fc5df0 100644 +--- a/AUTHORS ++++ b/AUTHORS +@@ -103,6 +103,7 @@ Asish Singh <asish.singh@samsung.com> + Attila Dusnoki <dati91@gmail.com> + Avinaash Doreswamy <avi.nitk@samsung.com> + Ayush Khandelwal <k.ayush@samsung.com> ++Azhar Shaikh <azhar.shaikh@intel.com> + Balazs Kelemen <b.kelemen@samsung.com> + Baul Eun <baul.eun@samsung.com> + Behara Mani Shyam Patro <behara.ms@samsung.com> +diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc +index b4156423f7..053384d378 100644 +--- a/media/gpu/vaapi/vaapi_wrapper.cc ++++ b/media/gpu/vaapi/vaapi_wrapper.cc +@@ -333,7 +333,13 @@ bool VADisplayState::InitializeOnce() { + DVLOG(1) << "VAAPI version: " << major_version << "." << minor_version << " " + << va_vendor_string_; + +- if (major_version != VA_MAJOR_VERSION || minor_version != VA_MINOR_VERSION) { ++ // The VAAPI version is determined from what is loaded on the system by ++ // calling vaInitialize(). We want a runtime evaluation of libva version, ++ // of what is loaded on the system, with, what browser is compiled with. ++ // Also since the libva is now ABI-compatible, relax the version check ++ // which helps in upgrading the libva, without breaking any existing ++ // functionality. ++ if (!VA_CHECK_VERSION(major_version, minor_version, 0)) { + LOG(ERROR) << "This build of Chromium requires VA-API version " + << VA_MAJOR_VERSION << "." << VA_MINOR_VERSION + << ", system version: " << major_version << "." << minor_version; +-- +2.20.1 + diff --git a/chromium-vaapi.patch b/chromium-vaapi.patch new file mode 100644 index 000000000000..da7b355c4df8 --- /dev/null +++ b/chromium-vaapi.patch @@ -0,0 +1,116 @@ +From abc7295ca1653c85472916909f0eb76e28e79a58 Mon Sep 17 00:00:00 2001 +From: Akarshan Biswas <akarshan.biswas@gmail.com> +Date: Thu, 24 Jan 2019 12:45:29 +0530 +Subject: [PATCH] Enable mojo with VDA2 on Linux + +--- + chrome/browser/about_flags.cc | 8 ++++---- + chrome/browser/flag_descriptions.cc | 9 +++++++-- + chrome/browser/flag_descriptions.h | 10 ++++++++-- + gpu/config/software_rendering_list.json | 3 ++- + media/media_options.gni | 9 ++++++--- + media/mojo/services/gpu_mojo_media_client.cc | 4 ++-- + 6 files changed, 29 insertions(+), 14 deletions(-) + +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index 0a84c6ac1..be2aa1d8b 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1714,7 +1714,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + #if defined(OS_WIN) +@@ -2345,12 +2345,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // ENABLE_ISOLATED_XR_SERVICE + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS // OS_LINUX + {"v8-cache-options", flag_descriptions::kV8CacheOptionsName, + flag_descriptions::kV8CacheOptionsDescription, kOsAll, + MULTI_VALUE_TYPE(kV8CacheOptionsChoices)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index 62637e092..86f89fc6e 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -3085,15 +3085,20 @@ const char kTextSuggestionsTouchBarDescription[] = + + #endif + +-// Chrome OS ------------------------------------------------------------------- ++// Chrome OS Linux------------------------------------------------------------------- + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + const char kAcceleratedMjpegDecodeName[] = + "Hardware-accelerated mjpeg decode for captured frame"; + const char kAcceleratedMjpegDecodeDescription[] = + "Enable hardware-accelerated mjpeg decode for captured frame where " + "available."; ++#endif ++ ++// Chrome OS -------------------------------------------------- ++ ++#if defined(OS_CHROMEOS) + + const char kAllowTouchpadThreeFingerClickName[] = "Touchpad three-finger-click"; + const char kAllowTouchpadThreeFingerClickDescription[] = +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index 5dac660bb..6cc4115da 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1846,13 +1846,19 @@ extern const char kPermissionPromptPersistenceToggleDescription[]; + + #endif // defined(OS_MACOSX) + +-// Chrome OS ------------------------------------------------------------------ ++// Chrome OS and Linux ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++#endif // defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) ++ ++// Chrome OS ------------------------------------------------------------------------ ++ ++#if defined(OS_CHROMEOS) ++ + extern const char kAllowTouchpadThreeFingerClickName[]; + extern const char kAllowTouchpadThreeFingerClickDescription[]; + +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index 65f37b3f1..ae8a1718f 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -371,11 +371,12 @@ + }, + { + "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], + "os": { + "type": "linux" + }, ++ "vendor_id": "0x10de", + "features": [ + "accelerated_video_decode" + ] +-- +2.20.1 diff --git a/chromium-webrtc-missing-header.patch b/chromium-webrtc-missing-header.patch new file mode 100644 index 000000000000..335a7b80f0ee --- /dev/null +++ b/chromium-webrtc-missing-header.patch @@ -0,0 +1,10 @@ +--- third_party/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc.orig 2019-01-20 10:57:09.166224517 +0000 ++++ third_party/webrtc/modules/desktop_capture/linux/window_capturer_x11.cc 2019-01-20 06:01:05.901545307 +0000 +@@ -14,6 +14,7 @@ + #include <X11/extensions/Xcomposite.h> + #include <X11/extensions/Xrender.h> + ++#include <string.h> + #include <memory> + #include <string> + #include <utility> diff --git a/chromium-widevine.patch b/chromium-widevine.patch new file mode 100644 index 000000000000..1a1a3f228bf5 --- /dev/null +++ b/chromium-widevine.patch @@ -0,0 +1,22 @@ +diff -upr chromium-71.0.3578.80.orig/chrome/common/chrome_content_client.cc chromium-71.0.3578.80/chrome/common/chrome_content_client.cc +--- chromium-71.0.3578.80.orig/chrome/common/chrome_content_client.cc 2018-12-03 20:16:43.000000000 +0000 ++++ chromium-71.0.3578.80/chrome/common/chrome_content_client.cc 2018-12-04 21:34:28.658206942 +0000 +@@ -99,7 +99,7 @@ + // Registers Widevine CDM if Widevine is enabled, the Widevine CDM is + // bundled and not a component. When the Widevine CDM is a component, it is + // registered in widevine_cdm_component_installer.cc. +-#if BUILDFLAG(BUNDLE_WIDEVINE_CDM) && !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) ++#if BUILDFLAG(ENABLE_WIDEVINE) && !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) + #define REGISTER_BUNDLED_WIDEVINE_CDM + #include "third_party/widevine/cdm/widevine_cdm_common.h" // nogncheck + // TODO(crbug.com/663554): Needed for WIDEVINE_CDM_VERSION_STRING. Support +diff -upr chromium-71.0.3578.80.orig/third_party/widevine/cdm/widevine_cdm_version.h chromium-71.0.3578.80/third_party/widevine/cdm/widevine_cdm_version.h +--- chromium-71.0.3578.80.orig/third_party/widevine/cdm/widevine_cdm_version.h 2018-12-03 20:18:01.000000000 +0000 ++++ chromium-71.0.3578.80/third_party/widevine/cdm/widevine_cdm_version.h 2018-12-04 21:37:45.635374949 +0000 +@@ -12,4 +12,6 @@ + // - WIDEVINE_CDM_VERSION_STRING (with the version of the CDM that's available + // as a string, e.g., "1.0.123.456"). + ++#define WIDEVINE_CDM_VERSION_STRING "unknown" ++ + #endif // WIDEVINE_CDM_VERSION_H_ diff --git a/chromium.install b/chromium.install new file mode 100644 index 000000000000..c2b5000d2d7b --- /dev/null +++ b/chromium.install @@ -0,0 +1,16 @@ +post_upgrade() { + if (($(vercmp $2 42.0.2311.90-1) < 0)); then + echo ':: This Chromium package no longer supports custom flags passed via the' + echo ' /etc/chromium/default file (or any other files under /etc/chromium/).' + echo + echo ' The new /usr/bin/chromium launcher script will automatically detect' + echo ' Pepper Flash (if installed) and pass the correct flags to Chromium.' + echo + echo ' If you need to pass extra command-line arguments to Chromium, you' + echo ' can put them in a "chromium-flags.conf" file under $HOME/.config/' + echo ' (or $XDG_CONFIG_HOME). Arguments are split on whitespace and shell' + echo ' quoting rules apply but no further parsing is performed.' + fi +} + +# vim:set ts=2 sw=2 et: |