diff options
author | Eric Hameleers <alien@slackware.com> | 2016-07-23 23:51:55 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2016-07-23 23:51:55 +0000 |
commit | b588868bf12c6de338a3f8c7584109032948daa4 (patch) | |
tree | 2af0ba26e15b3e8b97cbd24f774b4a9840940fdf /chromium | |
parent | 6ef788438ed9cf571e62ccd8ebe67847dfbb3de8 (diff) | |
download | asb-b588868bf12c6de338a3f8c7584109032948daa4.tar.gz asb-b588868bf12c6de338a3f8c7584109032948daa4.tar.xz |
chromium: rebased the vaapi patch against chromium-52.0.2743.82 sources
Diffstat (limited to 'chromium')
-rw-r--r-- | chromium/build/patches/chromium_vaapi.patch | 872 |
1 files changed, 513 insertions, 359 deletions
diff --git a/chromium/build/patches/chromium_vaapi.patch b/chromium/build/patches/chromium_vaapi.patch index f44316e1..1f375694 100644 --- a/chromium/build/patches/chromium_vaapi.patch +++ b/chromium/build/patches/chromium_vaapi.patch @@ -2,15 +2,15 @@ Description: Enables using VA-API hardware acceleration in Linux. The patch for bpf_gpu_policy_linux.cc initially came from https://codereview.chromium.org/15955009/diff/92001/content/common/sandbox_linux/bpf_gpu_policy_linux.cc Taken from: -https://code.launchpad.net/~saiarcot895/chromium-browser/chromium-browser.wily.dev -And rebased against chromium-dev 51.0.2704.63 sources. +https://github.com/saiarcot895/chromium-ubuntu-build/blob/master/debian/patches/enable_vaapi_on_linux.diff +And rebased against chromium 52.0.2743.82 sources. -------- -diff -uar chromium-51.0.2704.63.orig/chrome/browser/about_flags.cc chromium-51.0.2704.63/chrome/browser/about_flags.cc ---- chromium-51.0.2704.63.orig/chrome/browser/about_flags.cc 2016-05-25 21:00:57.000000000 +0200 -+++ chromium-51.0.2704.63/chrome/browser/about_flags.cc 2016-05-26 09:45:41.205615406 +0200 -@@ -843,7 +843,7 @@ +diff -uarN chromium-52.0.2743.82.orig/chrome/browser/about_flags.cc chromium-52.0.2743.82/chrome/browser/about_flags.cc +--- chromium-52.0.2743.82.orig/chrome/browser/about_flags.cc 2016-07-20 21:03:19.000000000 +0200 ++++ chromium-52.0.2743.82/chrome/browser/about_flags.cc 2016-07-24 00:48:52.405998826 +0200 +@@ -866,7 +866,7 @@ "disable-accelerated-video-decode", IDS_FLAGS_ACCELERATED_VIDEO_DECODE_NAME, IDS_FLAGS_ACCELERATED_VIDEO_DECODE_DESCRIPTION, @@ -19,85 +19,424 @@ diff -uar chromium-51.0.2704.63.orig/chrome/browser/about_flags.cc chromium-51.0 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), }, #if defined(USE_ASH) -diff -uar chromium-51.0.2704.63.orig/content/common/BUILD.gn chromium-51.0.2704.63/content/common/BUILD.gn ---- chromium-51.0.2704.63.orig/content/common/BUILD.gn 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/common/BUILD.gn 2016-05-26 09:45:41.207615638 +0200 -@@ -11,7 +11,7 @@ +diff -uarN chromium-52.0.2743.82.orig/content/common/BUILD.gn chromium-52.0.2743.82/content/common/BUILD.gn +--- chromium-52.0.2743.82.orig/content/common/BUILD.gn 2016-07-20 21:03:24.000000000 +0200 ++++ chromium-52.0.2743.82/content/common/BUILD.gn 2016-07-24 00:48:52.424001531 +0200 +@@ -11,6 +11,49 @@ + import("//build/config/mac/mac_sdk.gni") + } + ++if ((is_desktop_linux || is_chromeos) && current_cpu != "arm") { ++ action("libva_generate_stubs") { ++ extra_header = "../../media/gpu/va_stub_header.fragment" ++ ++ script = "../../tools/generate_stubs/generate_stubs.py" ++ sources = [ ++ "../../media/gpu/va.sigs", ++ ] ++ inputs = [ ++ extra_header, ++ ] ++ sources += [ "../../media/gpu/va_x11.sigs" ] ++ if (use_ozone) { ++ sources += [ ++ "../../media/gpu/va_drm.sigs", ++ "va_wayland.sigs", ++ ] ++ } ++ stubs_filename_root = "va_stubs" ++ ++ outputs = [ ++ "$target_gen_dir/$stubs_filename_root.cc", ++ "$target_gen_dir/$stubs_filename_root.h", ++ ] ++ args = [ ++ "-i", ++ rebase_path("$target_gen_dir", root_build_dir), ++ "-o", ++ rebase_path("$target_gen_dir", root_build_dir), ++ "-t", ++ "posix_stubs", ++ "-e", ++ rebase_path(extra_header, root_build_dir), ++ "-s", ++ stubs_filename_root, ++ "-p", ++ "content/common", ++ ] ++ ++ args += rebase_path(sources, root_build_dir) ++ } ++} ++ + source_set("common") { + # Targets external to content should always link to the public API. + # In addition, targets outside of the content component (shell and tests) +@@ -178,6 +221,15 @@ + + if (use_seccomp_bpf) { + defines += [ "USE_SECCOMP_BPF" ] ++ if (current_cpu != "arm" && is_desktop_linux) { ++ sources += get_target_outputs(":libva_generate_stubs") ++ deps += [ ":libva_generate_stubs" ] ++ configs += [ "//third_party/libva:libva_config" ] ++ if (use_ozone) { ++ configs += [ "//build/config/linux:x11" ] ++ deps += [ "//third_party/wayland:wayland_client" ] ++ } ++ } + } else { + if (is_linux) { + sources -= [ +diff -uarN chromium-52.0.2743.82.orig/content/common/sandbox_linux/bpf_gpu_policy_linux.cc chromium-52.0.2743.82/content/common/sandbox_linux/bpf_gpu_policy_linux.cc +--- chromium-52.0.2743.82.orig/content/common/sandbox_linux/bpf_gpu_policy_linux.cc 2016-07-20 21:03:24.000000000 +0200 ++++ chromium-52.0.2743.82/content/common/sandbox_linux/bpf_gpu_policy_linux.cc 2016-07-24 00:48:52.425001682 +0200 +@@ -23,6 +23,12 @@ + #include "base/macros.h" + #include "base/memory/ptr_util.h" + #include "build/build_config.h" ++ ++#if !defined(__arm__) ++// Auto-generated for dlopen libva libraries ++#include "content/common/va_stubs.h" ++#endif ++ + #include "content/common/sandbox_linux/sandbox_bpf_base_policy_linux.h" + #include "content/common/sandbox_linux/sandbox_seccomp_bpf_linux.h" + #include "content/common/set_process_title.h" +@@ -34,6 +40,14 @@ + #include "sandbox/linux/syscall_broker/broker_process.h" + #include "sandbox/linux/system_headers/linux_syscalls.h" + ++#if !defined(__arm__) ++#include "third_party/libva/va/va.h" ++#include "third_party/libva/va/va_x11.h" ++#if defined(USE_OZONE) ++#include "third_party/libva/va/wayland/va_wayland.h" ++#endif ++#endif ++ + using sandbox::arch_seccomp_data; + using sandbox::bpf_dsl::Allow; + using sandbox::bpf_dsl::ResultExpr; +@@ -42,6 +56,16 @@ + using sandbox::syscall_broker::BrokerProcess; + using sandbox::SyscallSets; + ++#if !defined(__arm__) ++using content_common::kModuleVa; ++using content_common::kModuleVa_x11; ++#if defined(USE_OZONE) ++using content_common::kModuleVa_drm; ++#endif ++using content_common::InitializeStubs; ++using content_common::StubPathMap; ++#endif ++ + namespace content { + + namespace { +@@ -96,7 +120,7 @@ + + bool IsAcceleratedVaapiVideoEncodeEnabled() { + bool accelerated_encode_enabled = false; +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + const base::CommandLine& command_line = + *base::CommandLine::ForCurrentProcess(); + accelerated_encode_enabled = +@@ -297,32 +321,72 @@ + GpuBrokerProcessPolicy::Create, + std::vector<BrokerFilePermission>()); // No extra files in whitelist. + ++#if !defined(__arm__) + if (IsArchitectureX86_64() || IsArchitectureI386()) { + // Accelerated video dlopen()'s some shared objects + // inside the sandbox, so preload them now. + if (IsAcceleratedVaapiVideoEncodeEnabled() || + IsAcceleratedVideoDecodeEnabled()) { +- const char* I965DrvVideoPath = NULL; +- const char* I965HybridDrvVideoPath = NULL; +- +- if (IsArchitectureX86_64()) { +- I965DrvVideoPath = "/usr/lib64/va/drivers/i965_drv_video.so"; +- I965HybridDrvVideoPath = "/usr/lib64/va/drivers/hybrid_drv_video.so"; +- } else if (IsArchitectureI386()) { +- I965DrvVideoPath = "/usr/lib/va/drivers/i965_drv_video.so"; ++ VLOG(1) << "Attempting to enable hardware video acceleration."; ++ StubPathMap paths; ++ paths[kModuleVa].push_back("libva.so.1"); ++ paths[kModuleVa_x11].push_back("libva-x11.so.1"); ++#if defined(USE_OZONE) ++ paths[kModuleVa_drm].push_back("libva-drm.so.1"); ++#endif ++ if (!InitializeStubs(paths)) { ++ LOG(WARNING) << "Failed to initialize stubs"; ++ return true; + } + +- dlopen(I965DrvVideoPath, RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); +- if (I965HybridDrvVideoPath) +- dlopen(I965HybridDrvVideoPath, RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); +- dlopen("libva.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); ++ // libva drivers won't get loaded even above two libraries get dlopened. ++ // Thus, libva calls will fail after post sandbox stage. ++ // ++ // To get the va driver loaded before sandboxing, upstream simply dlopen ++ // the hard-coded va driver path because ChromeOS is the only platform ++ // that Google want to support libva. ++ // ++ // While generic linux distros ship va driver as anywhere they want. ++ // Fortunately, the va driver will be loadded when vaInitialize() get ++ // called. ++ // So the following code is to call vaInitialize() before sandboxing. ++ ++ VADisplay va_display = NULL; + #if defined(USE_OZONE) +- dlopen("libva-drm.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); +-#elif defined(USE_X11) +- dlopen("libva-x11.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); ++ struct wl_display* wayland_display = wl_display_connect(NULL); ++ if (wayland_display) { ++ va_display = vaGetDisplayWl(wayland_display); ++ if (!vaDisplayIsValid(va_display)) { ++ LOG(WARNING) << "Failed to call vaGetDisplayWl()"; ++ va_display = NULL; ++ } ++ } else { ++ LOG(WARNING) << "Failed to find Wayland display"; ++ } ++#endif ++ ++ if (!va_display) { ++ Display* x_display = XOpenDisplay(NULL); ++ if (!x_display) { ++ LOG(WARNING) << "Failed to find X-Display"; ++ return true; ++ } ++ va_display = vaGetDisplay(x_display); ++ if (!vaDisplayIsValid(va_display)) { ++ LOG(WARNING) << "Failed to call vaGetDisplay()"; ++ return true; ++ } ++ } ++ ++ int major_version, minor_version; ++ if (vaInitialize(va_display, &major_version, &minor_version) ++ != VA_STATUS_SUCCESS) { ++ LOG(WARNING) << "Failed to call vaInitialize()"; ++ return true; ++ } ++ } // end of IsAcceleratedVaapiVideoEncodeEnabled() || IsAcceleratedVideoDecodeEnabled() ++ } // end of IsArchitectureX86_64() || IsArchitectureI386() + #endif +- } +- } + + return true; + } +diff -uarN chromium-52.0.2743.82.orig/content/common/va_wayland.sigs chromium-52.0.2743.82/content/common/va_wayland.sigs +--- chromium-52.0.2743.82.orig/content/common/va_wayland.sigs 1970-01-01 01:00:00.000000000 +0100 ++++ chromium-52.0.2743.82/content/common/va_wayland.sigs 2016-07-24 00:48:52.425001682 +0200 +@@ -0,0 +1,8 @@ ++// Copyright 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++//------------------------------------------------ ++// Functions from libva-wayland used in chromium code. ++//------------------------------------------------ ++VADisplay vaGetDisplayWl(struct wl_display *display); +diff -uarN chromium-52.0.2743.82.orig/content/content_common.gypi chromium-52.0.2743.82/content/content_common.gypi +--- chromium-52.0.2743.82.orig/content/content_common.gypi 2016-07-20 21:03:24.000000000 +0200 ++++ chromium-52.0.2743.82/content/content_common.gypi 2016-07-24 00:48:52.495012204 +0200 +@@ -650,6 +650,52 @@ + ], + }, { + 'defines': ['USE_SECCOMP_BPF'], ++ 'dependencies': [ ++ '../build/linux/system.gyp:x11', ++ ], ++ 'variables': { ++ 'sig_files': [ ++ '../media/gpu/va.sigs', ++ '../media/gpu/va_x11.sigs', ++ ], ++ 'generate_stubs_script': '../tools/generate_stubs/generate_stubs.py', ++ 'extra_header': '../media/gpu/va_stub_header.fragment', ++ 'outfile_type': 'posix_stubs', ++ 'stubs_filename_root': 'va_stubs', ++ 'project_path': 'content/common', ++ 'intermediate_dir': '<(INTERMEDIATE_DIR)', ++ 'output_root': '<(SHARED_INTERMEDIATE_DIR)/va', ++ }, ++ 'actions': [ ++ { ++ 'action_name': 'libva_generate_stubs', ++ 'inputs': [ ++ '<(generate_stubs_script)', ++ '<(extra_header)', ++ '<@(sig_files)', ++ ], ++ 'outputs': [ ++ '<(intermediate_dir)/<(stubs_filename_root).cc', ++ '<(output_root)/<(project_path)/<(stubs_filename_root).h', ++ ], ++ 'action': ['python', ++ '<(generate_stubs_script)', ++ '-i', '<(intermediate_dir)', ++ '-o', '<(output_root)/<(project_path)', ++ '-t', '<(outfile_type)', ++ '-e', '<(extra_header)', ++ '-s', '<(stubs_filename_root)', ++ '-p', '<(project_path)', ++ '<@(_inputs)', ++ ], ++ 'process_outputs_as_sources': 1, ++ 'message': 'Generating libva stubs for dynamic loading', ++ }, ++ ], ++ 'include_dirs': [ ++ '<(DEPTH)/third_party/libva', ++ '<(output_root)', ++ ], + }], + ['use_ozone==1', { + 'dependencies': [ +diff -uarN chromium-52.0.2743.82.orig/content/content_gpu.gypi chromium-52.0.2743.82/content/content_gpu.gypi +--- chromium-52.0.2743.82.orig/content/content_gpu.gypi 2016-07-20 21:03:24.000000000 +0200 ++++ chromium-52.0.2743.82/content/content_gpu.gypi 2016-07-24 00:48:52.425001682 +0200 +@@ -49,7 +49,7 @@ + ], + }, + }], +- ['target_arch!="arm" and chromeos == 1', { ++ ['target_arch!="arm" and (chromeos == 1 or desktop_linux == 1)', { + 'include_dirs': [ + '<(DEPTH)/third_party/libva', + ], +diff -uarN chromium-52.0.2743.82.orig/content/gpu/BUILD.gn chromium-52.0.2743.82/content/gpu/BUILD.gn +--- chromium-52.0.2743.82.orig/content/gpu/BUILD.gn 2016-07-20 21:03:24.000000000 +0200 ++++ chromium-52.0.2743.82/content/gpu/BUILD.gn 2016-07-24 00:48:52.425001682 +0200 +@@ -86,7 +86,7 @@ + ] + } + +- if (is_chromeos && current_cpu != "arm") { ++ if ((is_desktop_linux || is_chromeos) && current_cpu != "arm") { + configs += [ "//third_party/libva:libva_config" ] + } + +diff -uarN chromium-52.0.2743.82.orig/content/gpu/gpu_main.cc chromium-52.0.2743.82/content/gpu/gpu_main.cc +--- chromium-52.0.2743.82.orig/content/gpu/gpu_main.cc 2016-07-20 21:03:24.000000000 +0200 ++++ chromium-52.0.2743.82/content/gpu/gpu_main.cc 2016-07-24 00:48:52.425001682 +0200 +@@ -75,7 +75,7 @@ + #include "content/common/sandbox_mac.h" + #endif + +-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) ++#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY) + #include "media/gpu/vaapi_wrapper.h" + #endif + +@@ -252,7 +252,7 @@ + GetGpuInfoFromCommandLine(gpu_info, command_line); + gpu_info.in_process_gpu = false; + +-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) ++#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY) + media::VaapiWrapper::PreSandboxInitialization(); + #endif + +diff -uarN chromium-52.0.2743.82.orig/content/public/common/content_switches.cc chromium-52.0.2743.82/content/public/common/content_switches.cc +--- chromium-52.0.2743.82.orig/content/public/common/content_switches.cc 2016-07-20 21:03:24.000000000 +0200 ++++ chromium-52.0.2743.82/content/public/common/content_switches.cc 2016-07-24 00:48:52.451005590 +0200 +@@ -970,7 +970,9 @@ + #if defined(OS_CHROMEOS) + // Disables panel fitting (used for mirror mode). + const char kDisablePanelFitting[] = "disable-panel-fitting"; ++#endif + ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + // Disables VA-API accelerated video encode. + const char kDisableVaapiAcceleratedVideoEncode[] = + "disable-vaapi-accelerated-video-encode"; +diff -uarN chromium-52.0.2743.82.orig/content/public/common/content_switches.h chromium-52.0.2743.82/content/public/common/content_switches.h +--- chromium-52.0.2743.82.orig/content/public/common/content_switches.h 2016-07-20 21:03:24.000000000 +0200 ++++ chromium-52.0.2743.82/content/public/common/content_switches.h 2016-07-24 00:48:52.463007394 +0200 +@@ -278,6 +278,8 @@ + + #if defined(OS_CHROMEOS) + CONTENT_EXPORT extern const char kDisablePanelFitting[]; ++#endif ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + CONTENT_EXPORT extern const char kDisableVaapiAcceleratedVideoEncode[]; + #endif + +diff -uarN chromium-52.0.2743.82.orig/media/BUILD.gn chromium-52.0.2743.82/media/BUILD.gn +--- chromium-52.0.2743.82.orig/media/BUILD.gn 2016-07-20 21:03:25.000000000 +0200 ++++ chromium-52.0.2743.82/media/BUILD.gn 2016-07-24 00:48:52.474009047 +0200 +@@ -339,7 +339,7 @@ + allow_circular_includes_from = [ "//media/base/android" ] + } + +- if (current_cpu != "arm" && is_chromeos) { ++ if (current_cpu != "arm" && (is_chromeos || is_desktop_linux)) { + sources += [ + "filters/h264_bitstream_buffer.cc", + "filters/h264_bitstream_buffer.h", +@@ -629,7 +629,7 @@ + } + } + +- if (current_cpu != "arm" && is_chromeos) { ++ if (current_cpu != "arm" && (is_chromeos || is_desktop_linux)) { + sources += [ "filters/h264_bitstream_buffer_unittest.cc" ] + } + +diff -uarN chromium-52.0.2743.82.orig/media/gpu/BUILD.gn chromium-52.0.2743.82/media/gpu/BUILD.gn +--- chromium-52.0.2743.82.orig/media/gpu/BUILD.gn 2016-07-20 21:03:26.000000000 +0200 ++++ chromium-52.0.2743.82/media/gpu/BUILD.gn 2016-07-24 00:48:52.491011600 +0200 +@@ -12,7 +12,7 @@ import("//build/config/mac/mac_sdk.gni") } -if (is_chromeos && current_cpu != "arm") { -+if (is_linux && !(is_chromeos && current_cpu == "arm")) { ++if ((is_desktop_linux || is_chromeos) && current_cpu != "arm") { action("libva_generate_stubs") { - extra_header = "gpu/media/va_stub_header.fragment" + extra_header = "va_stub_header.fragment" -@@ -347,7 +347,7 @@ +@@ -229,7 +229,7 @@ } } - if (is_chromeos) { + if (is_linux) { sources += [ - "gpu/media/accelerated_video_decoder.h", - "gpu/media/h264_decoder.cc", -@@ -392,13 +392,13 @@ + "accelerated_video_decoder.h", + "h264_decoder.cc", +@@ -273,7 +273,7 @@ "GLESv2", ] } - if (current_cpu == "arm") { + if (current_cpu == "arm" && is_chromeos) { sources += [ - "gpu/media/tegra_v4l2_device.cc", - "gpu/media/tegra_v4l2_device.h", - ] - } -- if (current_cpu != "arm") { -+ if (current_cpu != "arm" || !is_chromeos) { - sources += [ - "gpu/media/va_surface.h", - "gpu/media/vaapi_jpeg_decode_accelerator.cc", -diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/gpu_video_decode_accelerator.cc chromium-51.0.2704.63/content/common/gpu/media/gpu_video_decode_accelerator.cc ---- chromium-51.0.2704.63.orig/content/common/gpu/media/gpu_video_decode_accelerator.cc 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/common/gpu/media/gpu_video_decode_accelerator.cc 2016-05-26 09:45:41.208615755 +0200 -@@ -57,7 +57,7 @@ - return true; - } - --#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX) -+#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX) || defined(OS_LINUX) - static bool BindImage(const base::WeakPtr<gpu::GpuCommandBufferStub>& stub, - uint32_t client_texture_id, - uint32_t texture_target, -@@ -169,7 +169,7 @@ - get_gl_context_cb_ = base::Bind(&GetGLContext, stub_->AsWeakPtr()); - make_context_current_cb_ = - base::Bind(&MakeDecoderContextCurrent, stub_->AsWeakPtr()); --#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX) -+#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX) || defined(OS_LINUX) - bind_image_cb_ = base::Bind(&BindImage, stub_->AsWeakPtr()); - #endif - get_gles2_decoder_cb_ = base::Bind(&GetGLES2Decoder, stub_->AsWeakPtr()); -diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/gpu_video_decode_accelerator_factory_impl.cc chromium-51.0.2704.63/content/common/gpu/media/gpu_video_decode_accelerator_factory_impl.cc ---- chromium-51.0.2704.63.orig/content/common/gpu/media/gpu_video_decode_accelerator_factory_impl.cc 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/common/gpu/media/gpu_video_decode_accelerator_factory_impl.cc 2016-05-26 09:45:41.208615755 +0200 -@@ -13,14 +13,14 @@ - #include "content/common/gpu/media/dxva_video_decode_accelerator_win.h" + "tegra_v4l2_device.cc", + "tegra_v4l2_device.h", +diff -uarN chromium-52.0.2743.82.orig/media/gpu/gpu_video_decode_accelerator_factory_impl.cc chromium-52.0.2743.82/media/gpu/gpu_video_decode_accelerator_factory_impl.cc +--- chromium-52.0.2743.82.orig/media/gpu/gpu_video_decode_accelerator_factory_impl.cc 2016-07-20 21:03:26.000000000 +0200 ++++ chromium-52.0.2743.82/media/gpu/gpu_video_decode_accelerator_factory_impl.cc 2016-07-24 00:55:56.826782397 +0200 +@@ -14,7 +14,7 @@ + #include "media/gpu/dxva_video_decode_accelerator_win.h" #elif defined(OS_MACOSX) - #include "content/common/gpu/media/vt_video_decode_accelerator_mac.h" + #include "media/gpu/vt_video_decode_accelerator_mac.h" -#elif defined(OS_CHROMEOS) +#elif defined(OS_CHROMEOS) || defined(OS_LINUX) #if defined(USE_V4L2_CODEC) - #include "content/common/gpu/media/v4l2_device.h" - #include "content/common/gpu/media/v4l2_slice_video_decode_accelerator.h" - #include "content/common/gpu/media/v4l2_video_decode_accelerator.h" - #include "ui/gl/gl_surface_egl.h" - #endif --#if defined(ARCH_CPU_X86_FAMILY) -+#if defined(ARCH_CPU_X86_FAMILY) || defined(OS_LINUX) - #include "content/common/gpu/media/vaapi_video_decode_accelerator.h" - #include "ui/gl/gl_implementation.h" - #endif -@@ -78,7 +78,7 @@ + #include "media/gpu/v4l2_device.h" + #include "media/gpu/v4l2_slice_video_decode_accelerator.h" +@@ -79,7 +79,7 @@ #if defined(OS_WIN) capabilities.supported_profiles = DXVAVideoDecodeAccelerator::GetSupportedProfiles(); @@ -106,21 +445,12 @@ diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/gpu_video_decode_a media::VideoDecodeAccelerator::SupportedProfiles vda_profiles; #if defined(USE_V4L2_CODEC) vda_profiles = V4L2VideoDecodeAccelerator::GetSupportedProfiles(); -@@ -88,7 +88,7 @@ - media::GpuVideoAcceleratorUtil::InsertUniqueDecodeProfiles( - vda_profiles, &capabilities.supported_profiles); - #endif --#if defined(ARCH_CPU_X86_FAMILY) -+#if defined(ARCH_CPU_X86_FAMILY) || defined(OS_LINUX) - vda_profiles = VaapiVideoDecodeAccelerator::GetSupportedProfiles(); - media::GpuVideoAcceleratorUtil::InsertUniqueDecodeProfiles( - vda_profiles, &capabilities.supported_profiles); -@@ -129,7 +129,7 @@ +@@ -130,7 +130,7 @@ &GpuVideoDecodeAcceleratorFactoryImpl::CreateV4L2VDA, &GpuVideoDecodeAcceleratorFactoryImpl::CreateV4L2SVDA, #endif -#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) -+#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_LINUX) ++#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY) &GpuVideoDecodeAcceleratorFactoryImpl::CreateVaapiVDA, #endif #if defined(OS_MACOSX) @@ -129,30 +459,77 @@ diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/gpu_video_decode_a #endif -#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) -+#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_LINUX) - scoped_ptr<media::VideoDecodeAccelerator> ++#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY) + std::unique_ptr<media::VideoDecodeAccelerator> GpuVideoDecodeAcceleratorFactoryImpl::CreateVaapiVDA( const gpu::GpuPreferences& gpu_preferences) const { + VLOG(1) << "Creating new VAAPI video decode accelerator."; - scoped_ptr<media::VideoDecodeAccelerator> decoder; + std::unique_ptr<media::VideoDecodeAccelerator> decoder; decoder.reset(new VaapiVideoDecodeAccelerator(make_context_current_cb_, bind_image_cb_)); -diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/gpu_video_decode_accelerator_factory_impl.h chromium-51.0.2704.63/content/common/gpu/media/gpu_video_decode_accelerator_factory_impl.h ---- chromium-51.0.2704.63.orig/content/common/gpu/media/gpu_video_decode_accelerator_factory_impl.h 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/common/gpu/media/gpu_video_decode_accelerator_factory_impl.h 2016-05-26 09:45:41.208615755 +0200 -@@ -95,7 +95,7 @@ - scoped_ptr<media::VideoDecodeAccelerator> CreateV4L2SVDA( +diff -uarN chromium-52.0.2743.82.orig/media/gpu/gpu_video_decode_accelerator_factory_impl.h chromium-52.0.2743.82/media/gpu/gpu_video_decode_accelerator_factory_impl.h +--- chromium-52.0.2743.82.orig/media/gpu/gpu_video_decode_accelerator_factory_impl.h 2016-07-20 21:03:26.000000000 +0200 ++++ chromium-52.0.2743.82/media/gpu/gpu_video_decode_accelerator_factory_impl.h 2016-07-24 00:58:03.895878250 +0200 +@@ -99,7 +99,7 @@ + std::unique_ptr<media::VideoDecodeAccelerator> CreateV4L2SVDA( const gpu::GpuPreferences& gpu_preferences) const; #endif -#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) -+#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_LINUX) - scoped_ptr<media::VideoDecodeAccelerator> CreateVaapiVDA( ++#if (defined(OS_LINUX) || defined OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY) + std::unique_ptr<media::VideoDecodeAccelerator> CreateVaapiVDA( const gpu::GpuPreferences& gpu_preferences) const; #endif -diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/vaapi_video_decode_accelerator.cc chromium-51.0.2704.63/content/common/gpu/media/vaapi_video_decode_accelerator.cc ---- chromium-51.0.2704.63.orig/content/common/gpu/media/vaapi_video_decode_accelerator.cc 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/common/gpu/media/vaapi_video_decode_accelerator.cc 2016-05-26 09:45:41.209615872 +0200 -@@ -337,17 +337,17 @@ +diff -uarN chromium-52.0.2743.82.orig/media/gpu/ipc/service/BUILD.gn chromium-52.0.2743.82/media/gpu/ipc/service/BUILD.gn +--- chromium-52.0.2743.82.orig/media/gpu/ipc/service/BUILD.gn 2016-07-20 21:03:26.000000000 +0200 ++++ chromium-52.0.2743.82/media/gpu/ipc/service/BUILD.gn 2016-07-24 00:48:52.492011752 +0200 +@@ -37,7 +37,7 @@ + "//third_party/mesa:mesa_headers", + ] + +- if (is_chromeos && current_cpu != "arm") { ++ if ((is_desktop_linux || is_chromeos) && current_cpu != "arm") { + configs += [ "//third_party/libva:libva_config" ] + } + +diff -uarN chromium-52.0.2743.82.orig/media/gpu/ipc/service/gpu_video_decode_accelerator.cc chromium-52.0.2743.82/media/gpu/ipc/service/gpu_video_decode_accelerator.cc +--- chromium-52.0.2743.82.orig/media/gpu/ipc/service/gpu_video_decode_accelerator.cc 2016-07-20 21:03:26.000000000 +0200 ++++ chromium-52.0.2743.82/media/gpu/ipc/service/gpu_video_decode_accelerator.cc 2016-07-24 00:48:52.492011752 +0200 +@@ -58,7 +58,7 @@ + return true; + } + +-#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX) ++#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX) + static bool BindImage(const base::WeakPtr<gpu::GpuCommandBufferStub>& stub, + uint32_t client_texture_id, + uint32_t texture_target, +@@ -170,7 +170,7 @@ + get_gl_context_cb_ = base::Bind(&GetGLContext, stub_->AsWeakPtr()); + make_context_current_cb_ = + base::Bind(&MakeDecoderContextCurrent, stub_->AsWeakPtr()); +-#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX) ++#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX) + bind_image_cb_ = base::Bind(&BindImage, stub_->AsWeakPtr()); + #endif + get_gles2_decoder_cb_ = base::Bind(&GetGLES2Decoder, stub_->AsWeakPtr()); +diff -uarN chromium-52.0.2743.82.orig/media/gpu/va_stub_header.fragment chromium-52.0.2743.82/media/gpu/va_stub_header.fragment +--- chromium-52.0.2743.82.orig/media/gpu/va_stub_header.fragment 2016-07-20 21:03:26.000000000 +0200 ++++ chromium-52.0.2743.82/media/gpu/va_stub_header.fragment 2016-07-24 00:48:52.492011752 +0200 +@@ -5,8 +5,9 @@ + + #include "third_party/libva/va/drm/va_drm.h" + #include "third_party/libva/va/va.h" +-#if defined(USE_X11) + #include "third_party/libva/va/va_x11.h" ++#if defined(USE_OZONE) ++#include "third_party/libva/va/wayland/va_wayland.h" + #endif + + } +diff -uarN chromium-52.0.2743.82.orig/media/gpu/vaapi_video_decode_accelerator.cc chromium-52.0.2743.82/media/gpu/vaapi_video_decode_accelerator.cc +--- chromium-52.0.2743.82.orig/media/gpu/vaapi_video_decode_accelerator.cc 2016-07-20 21:03:26.000000000 +0200 ++++ chromium-52.0.2743.82/media/gpu/vaapi_video_decode_accelerator.cc 2016-07-24 01:01:15.048604076 +0200 +@@ -342,17 +342,17 @@ base::AutoLock auto_lock(lock_); DCHECK_EQ(state_, kUninitialized); @@ -173,7 +550,7 @@ diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/vaapi_video_decode << "EGLGLES2."; return false; } -@@ -357,7 +357,7 @@ +@@ -362,7 +362,7 @@ VaapiWrapper::kDecode, profile, base::Bind(&ReportToUMA, VAAPI_ERROR)); if (!vaapi_wrapper_.get()) { @@ -182,7 +559,7 @@ diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/vaapi_video_decode return false; } -@@ -374,7 +374,7 @@ +@@ -379,7 +379,7 @@ vp9_accelerator_.reset(new VaapiVP9Accelerator(this, vaapi_wrapper_.get())); decoder_.reset(new VP9Decoder(vp9_accelerator_.get())); } else { @@ -191,10 +568,10 @@ diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/vaapi_video_decode return false; } -diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/vaapi_wrapper.cc chromium-51.0.2704.63/content/common/gpu/media/vaapi_wrapper.cc ---- chromium-51.0.2704.63.orig/content/common/gpu/media/vaapi_wrapper.cc 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/common/gpu/media/vaapi_wrapper.cc 2016-05-26 09:45:41.209615872 +0200 -@@ -186,7 +186,7 @@ +diff -uarN chromium-52.0.2743.82.orig/media/gpu/vaapi_wrapper.cc chromium-52.0.2743.82/media/gpu/vaapi_wrapper.cc +--- chromium-52.0.2743.82.orig/media/gpu/vaapi_wrapper.cc 2016-07-20 21:03:26.000000000 +0200 ++++ chromium-52.0.2743.82/media/gpu/vaapi_wrapper.cc 2016-07-24 00:48:52.493011903 +0200 +@@ -189,7 +189,7 @@ VAProfile va_profile, const base::Closure& report_error_to_uma_cb) { if (!profile_infos_.Get().IsProfileSupported(mode, va_profile)) { @@ -203,7 +580,7 @@ diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/vaapi_wrapper.cc c return nullptr; } -@@ -341,15 +341,17 @@ +@@ -342,15 +342,17 @@ bool VaapiWrapper::VaInitialize(const base::Closure& report_error_to_uma_cb) { static bool vaapi_functions_initialized = PostSandboxInitialization(); if (!vaapi_functions_initialized) { @@ -226,16 +603,16 @@ diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/vaapi_wrapper.cc c else DVLOG(1) << kErrorMsg; return false; -@@ -417,7 +419,7 @@ - if (std::find(supported_entrypoints.begin(), - supported_entrypoints.end(), +@@ -416,7 +418,7 @@ + + if (std::find(supported_entrypoints.begin(), supported_entrypoints.end(), entrypoint) == supported_entrypoints.end()) { - DVLOG(1) << "Unsupported entrypoint"; + VLOG(1) << "Unsupported entrypoint"; return false; } return true; -@@ -441,8 +443,8 @@ +@@ -440,8 +442,8 @@ if (attribs[i].type != required_attribs[i].type || (attribs[i].value & required_attribs[i].value) != required_attribs[i].value) { @@ -246,277 +623,54 @@ diff -uar chromium-51.0.2704.63.orig/content/common/gpu/media/vaapi_wrapper.cc c return false; } } -diff -uar chromium-51.0.2704.63.orig/content/common/sandbox_linux/bpf_gpu_policy_linux.cc chromium-51.0.2704.63/content/common/sandbox_linux/bpf_gpu_policy_linux.cc ---- chromium-51.0.2704.63.orig/content/common/sandbox_linux/bpf_gpu_policy_linux.cc 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/common/sandbox_linux/bpf_gpu_policy_linux.cc 2016-05-26 09:45:41.210615989 +0200 -@@ -22,6 +22,8 @@ - #include "base/macros.h" - #include "base/memory/scoped_ptr.h" - #include "build/build_config.h" -+// Auto-generated for dlopen libva libraries -+#include "content/common/gpu/media/va_stubs.h" - #include "content/common/sandbox_linux/sandbox_bpf_base_policy_linux.h" - #include "content/common/sandbox_linux/sandbox_seccomp_bpf_linux.h" - #include "content/common/set_process_title.h" -@@ -32,6 +34,8 @@ - #include "sandbox/linux/syscall_broker/broker_file_permission.h" - #include "sandbox/linux/syscall_broker/broker_process.h" - #include "sandbox/linux/system_headers/linux_syscalls.h" -+#include "third_party/libva/va/va.h" -+#include "third_party/libva/va/va_x11.h" - - using sandbox::arch_seccomp_data; - using sandbox::bpf_dsl::Allow; -@@ -41,6 +45,11 @@ - using sandbox::syscall_broker::BrokerProcess; - using sandbox::SyscallSets; - -+using content_common_gpu_media::kModuleVa; -+using content_common_gpu_media::kModuleVa_x11; -+using content_common_gpu_media::InitializeStubs; -+using content_common_gpu_media::StubPathMap; -+ - namespace content { - - namespace { -@@ -95,7 +104,7 @@ - - bool IsAcceleratedVaapiVideoEncodeEnabled() { - bool accelerated_encode_enabled = false; --#if defined(OS_CHROMEOS) -+#if defined(OS_CHROMEOS) || defined(OS_LINUX) - const base::CommandLine& command_line = - *base::CommandLine::ForCurrentProcess(); - accelerated_encode_enabled = -@@ -295,32 +304,46 @@ - GpuBrokerProcessPolicy::Create, - std::vector<BrokerFilePermission>()); // No extra files in whitelist. - -- if (IsArchitectureX86_64() || IsArchitectureI386()) { -+ if (true) { - // Accelerated video dlopen()'s some shared objects - // inside the sandbox, so preload them now. - if (IsAcceleratedVaapiVideoEncodeEnabled() || - IsAcceleratedVideoDecodeEnabled()) { -- const char* I965DrvVideoPath = NULL; -- const char* I965HybridDrvVideoPath = NULL; -+ VLOG(1) << "Attempting to enable hardware video acceleration."; -+ StubPathMap paths; -+ paths[kModuleVa].push_back("libva.so.1"); -+ paths[kModuleVa_x11].push_back("libva-x11.so.1"); -+ if (!InitializeStubs(paths)) { -+ VLOG(1) << "Failed to initialize stubs"; -+ return false; -+ } - -- if (IsArchitectureX86_64()) { -- I965DrvVideoPath = "/usr/lib64/va/drivers/i965_drv_video.so"; -- I965HybridDrvVideoPath = "/usr/lib64/va/drivers/hybrid_drv_video.so"; -- } else if (IsArchitectureI386()) { -- I965DrvVideoPath = "/usr/lib/va/drivers/i965_drv_video.so"; -+ // libva drivers won't get loaded even above two libraries get dlopened. -+ // Thus, libva calls will fail after post sandbox stage. -+ // -+ // To get the va driver loaded before sandboxing, upstream simply dlopen -+ // the hard-coded va driver path because ChromeOS is the only platform -+ // that Google want to support libva. -+ // -+ // While generic linux distros ship va driver as anywhere they want. -+ // Fortunately, the va driver will be loadded when vaInitialize() get -+ // called. -+ // So the following code is to call vaInitialize() before sandboxing. -+ Display* x_display = XOpenDisplay(NULL); -+ VADisplay va_display = vaGetDisplay(x_display); -+ if (!vaDisplayIsValid(va_display)) { -+ VLOG(1) << "Failed to call vaGetDisplay()"; -+ return false; - } - -- dlopen(I965DrvVideoPath, RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); -- if (I965HybridDrvVideoPath) -- dlopen(I965HybridDrvVideoPath, RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); -- dlopen("libva.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); --#if defined(USE_OZONE) -- dlopen("libva-drm.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); --#elif defined(USE_X11) -- dlopen("libva-x11.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); --#endif -- } -- } -+ int major_version, minor_version; -+ if (vaInitialize(va_display, &major_version, &minor_version) -+ != VA_STATUS_SUCCESS) { -+ VLOG(1) << "Failed to call vaInitialize()"; -+ return false; -+ } -+ } // end of IsAcceleratedVaapiVideoEncodeEnabled() || IsAcceleratedVideoDecodeEnabled() -+ } // end of true - - return true; - } -diff -uar chromium-51.0.2704.63.orig/content/content_common.gypi chromium-51.0.2704.63/content/content_common.gypi ---- chromium-51.0.2704.63.orig/content/content_common.gypi 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/content_common.gypi 2016-05-26 09:45:41.210615989 +0200 -@@ -790,7 +790,7 @@ - }, - ], - }], -- ['chromeos==1', { -+ ['chromeos==1 or desktop_linux==1', { - 'sources': [ - 'common/gpu/media/accelerated_video_decoder.h', - 'common/gpu/media/h264_decoder.cc', -@@ -846,7 +846,7 @@ - 'common/gpu/media/tegra_v4l2_device.h', - ], - }], -- ['target_arch != "arm" and chromeos == 1', { -+ ['(target_arch != "arm" and chromeos == 1) or desktop_linux == 1', { - 'dependencies': [ - '../media/media.gyp:media', - '../third_party/libyuv/libyuv.gyp:libyuv', -diff -uar chromium-51.0.2704.63.orig/content/content_gpu.gypi chromium-51.0.2704.63/content/content_gpu.gypi ---- chromium-51.0.2704.63.orig/content/content_gpu.gypi 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/content_gpu.gypi 2016-05-26 09:45:41.210615989 +0200 -@@ -45,7 +45,7 @@ - ], - }, - }], -- ['target_arch!="arm" and chromeos == 1', { -+ ['(target_arch!="arm" and chromeos == 1) or desktop_linux == 1', { - 'include_dirs': [ - '<(DEPTH)/third_party/libva', - ], -diff -uar chromium-51.0.2704.63.orig/content/content_tests.gypi chromium-51.0.2704.63/content/content_tests.gypi ---- chromium-51.0.2704.63.orig/content/content_tests.gypi 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/content_tests.gypi 2016-05-26 09:45:41.211616106 +0200 -@@ -1729,7 +1729,7 @@ - }, - ] - }], -- ['chromeos==1 and target_arch != "arm"', { -+ ['desktop_linux==1 or (chromeos==1 and target_arch != "arm")', { - 'targets': [ - { - 'target_name': 'vaapi_jpeg_decoder_unittest', -diff -uar chromium-51.0.2704.63.orig/content/gpu/BUILD.gn chromium-51.0.2704.63/content/gpu/BUILD.gn ---- chromium-51.0.2704.63.orig/content/gpu/BUILD.gn 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/gpu/BUILD.gn 2016-05-26 09:45:41.229618219 +0200 -@@ -81,7 +81,7 @@ - ] - } - -- if (is_chromeos && current_cpu != "arm") { -+ if ((is_chromeos && current_cpu != "arm") || is_linux) { - configs += [ "//third_party/libva:libva_config" ] - } - -diff -uar chromium-51.0.2704.63.orig/content/gpu/gpu_main.cc chromium-51.0.2704.63/content/gpu/gpu_main.cc ---- chromium-51.0.2704.63.orig/content/gpu/gpu_main.cc 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/gpu/gpu_main.cc 2016-05-26 09:45:41.240619514 +0200 -@@ -74,7 +74,7 @@ - #include "content/common/sandbox_mac.h" - #endif - --#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) -+#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_LINUX) - #include "content/common/gpu/media/vaapi_wrapper.h" - #endif - -@@ -245,7 +245,7 @@ - GetGpuInfoFromCommandLine(gpu_info, command_line); - gpu_info.in_process_gpu = false; - --#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) -+#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_LINUX) - VaapiWrapper::PreSandboxInitialization(); - #endif - -diff -uar chromium-51.0.2704.63.orig/content/public/common/content_switches.cc chromium-51.0.2704.63/content/public/common/content_switches.cc ---- chromium-51.0.2704.63.orig/content/public/common/content_switches.cc 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/public/common/content_switches.cc 2016-05-26 09:45:41.240619514 +0200 -@@ -957,7 +957,9 @@ - #if defined(OS_CHROMEOS) - // Disables panel fitting (used for mirror mode). - const char kDisablePanelFitting[] = "disable-panel-fitting"; -+#endif - -+#if defined(OS_CHROMEOS) || defined(OS_LINUX) - // Disables VA-API accelerated video encode. - const char kDisableVaapiAcceleratedVideoEncode[] = - "disable-vaapi-accelerated-video-encode"; -diff -uar chromium-51.0.2704.63.orig/content/public/common/content_switches.h chromium-51.0.2704.63/content/public/common/content_switches.h ---- chromium-51.0.2704.63.orig/content/public/common/content_switches.h 2016-05-25 21:01:01.000000000 +0200 -+++ chromium-51.0.2704.63/content/public/common/content_switches.h 2016-05-26 09:45:41.241619632 +0200 -@@ -274,6 +274,8 @@ - - #if defined(OS_CHROMEOS) - CONTENT_EXPORT extern const char kDisablePanelFitting[]; -+#endif -+#if defined(OS_CHROMEOS) || defined(OS_LINUX) - CONTENT_EXPORT extern const char kDisableVaapiAcceleratedVideoEncode[]; - #endif - -diff -uar chromium-51.0.2704.63.orig/gpu/config/software_rendering_list_json.cc chromium-51.0.2704.63/gpu/config/software_rendering_list_json.cc ---- chromium-51.0.2704.63.orig/gpu/config/software_rendering_list_json.cc 2016-05-25 21:01:02.000000000 +0200 -+++ chromium-51.0.2704.63/gpu/config/software_rendering_list_json.cc 2016-05-26 09:45:41.256621394 +0200 -@@ -484,17 +484,6 @@ - ] - }, - { -- "id": 48, -- "description": "Accelerated video decode is unavailable on Linux", -- "cr_bugs": [137247], -- "os": { -- "type": "linux" -- }, -- "features": [ -- "accelerated_video_decode" -- ] -- }, -- { - "id": 49, - "description": "NVidia GeForce GT 650M can cause the system to hang with flash 3D", - "cr_bugs": [140175], -diff -uar chromium-51.0.2704.63.orig/media/BUILD.gn chromium-51.0.2704.63/media/BUILD.gn ---- chromium-51.0.2704.63.orig/media/BUILD.gn 2016-05-25 21:01:03.000000000 +0200 -+++ chromium-51.0.2704.63/media/BUILD.gn 2016-05-26 09:45:41.256621394 +0200 -@@ -326,7 +326,7 @@ - allow_circular_includes_from = [ "//media/base/android" ] - } - -- if (current_cpu != "arm" && is_chromeos) { -+ if ((current_cpu != "arm" && is_chromeos) || is_linux) { - sources += [ - "filters/h264_bitstream_buffer.cc", - "filters/h264_bitstream_buffer.h", -@@ -615,7 +615,7 @@ - } - } - -- if (current_cpu != "arm" && is_chromeos) { -+ if ((current_cpu != "arm" && is_chromeos) || is_linux) { - sources += [ "filters/h264_bitstream_buffer_unittest.cc" ] - } - -diff -uar chromium-51.0.2704.63.orig/media/media.gyp chromium-51.0.2704.63/media/media.gyp ---- chromium-51.0.2704.63.orig/media/media.gyp 2016-05-25 21:01:03.000000000 +0200 -+++ chromium-51.0.2704.63/media/media.gyp 2016-05-26 09:45:41.274623511 +0200 -@@ -739,7 +739,7 @@ +diff -uarN chromium-52.0.2743.82.orig/media/media.gyp chromium-52.0.2743.82/media/media.gyp +--- chromium-52.0.2743.82.orig/media/media.gyp 2016-07-20 21:03:26.000000000 +0200 ++++ chromium-52.0.2743.82/media/media.gyp 2016-07-24 00:48:52.494012054 +0200 +@@ -752,7 +752,7 @@ ], }], # For VaapiVideoEncodeAccelerator. - ['target_arch != "arm" and chromeos == 1', { -+ ['(target_arch != "arm" and chromeos == 1) or desktop_linux == 1', { ++ ['target_arch != "arm" and (chromeos == 1 or desktop_linux == 1)', { 'sources': [ 'filters/h264_bitstream_buffer.cc', 'filters/h264_bitstream_buffer.h', -@@ -1313,7 +1313,7 @@ +@@ -1330,7 +1330,7 @@ 'cdm/cdm_adapter_unittest.cc', ], }], - ['target_arch != "arm" and chromeos == 1 and use_x11 == 1', { -+ ['(target_arch != "arm" and chromeos == 1) or desktop_linux == 1 and use_x11 == 1', { ++ ['target_arch != "arm" and (chromeos == 1 or desktop_linux == 1) and use_x11 == 1', { 'sources': [ 'filters/h264_bitstream_buffer_unittest.cc', ], +@@ -2264,7 +2264,7 @@ + ], + }], + +- ['chromeos==1 and target_arch != "arm"', { ++ ['(desktop_linux==1 or chromeos==1) and target_arch != "arm"', { + 'targets': [ + { + 'target_name': 'vaapi_jpeg_decoder_unittest', +diff -uarN chromium-52.0.2743.82.orig/media/media_gpu.gypi chromium-52.0.2743.82/media/media_gpu.gypi +--- chromium-52.0.2743.82.orig/media/media_gpu.gypi 2016-07-20 21:03:26.000000000 +0200 ++++ chromium-52.0.2743.82/media/media_gpu.gypi 2016-07-24 00:48:52.494012054 +0200 +@@ -174,7 +174,7 @@ + }, + ], + }], +- ['chromeos==1', { ++ ['chromeos==1 or desktop_linux==1', { + 'sources': [ + 'gpu/accelerated_video_decoder.h', + 'gpu/h264_decoder.cc', +@@ -230,7 +230,7 @@ + 'gpu/tegra_v4l2_device.h', + ], + }], +- ['target_arch != "arm" and chromeos == 1', { ++ ['target_arch != "arm" and (chromeos == 1 or desktop_linux == 1)', { + 'dependencies': [ + '../media/media.gyp:media', + '../third_party/libyuv/libyuv.gyp:libyuv', |