Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Side by Side Diff: trunk/src/content/common/sandbox_linux/bpf_gpu_policy_linux.cc

Issue 357903003: Revert 279958 "Revert "Revert 279650 "Add VaapiVideoEncodeAccele..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/common/sandbox_linux/bpf_gpu_policy_linux.h" 5 #include "content/common/sandbox_linux/bpf_gpu_policy_linux.h"
6 6
7 #include <dlfcn.h> 7 #include <dlfcn.h>
8 #include <errno.h> 8 #include <errno.h>
9 #include <fcntl.h> 9 #include <fcntl.h>
10 #include <sys/socket.h> 10 #include <sys/socket.h>
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 } 65 }
66 66
67 inline bool IsArchitectureArm() { 67 inline bool IsArchitectureArm() {
68 #if defined(__arm__) 68 #if defined(__arm__)
69 return true; 69 return true;
70 #else 70 #else
71 return false; 71 return false;
72 #endif 72 #endif
73 } 73 }
74 74
75 bool IsAcceleratedVideoEnabled() { 75 bool IsAcceleratedVideoDecodeEnabled() {
76 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 76 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
77 bool accelerated_encode_enabled = false; 77 return !command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode);
78 #if defined(OS_CHROMEOS)
79 accelerated_encode_enabled =
80 command_line.HasSwitch(switches::kEnableVaapiAcceleratedVideoEncode);
81 #endif
82 return !command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode) ||
83 accelerated_encode_enabled;
84 } 78 }
85 79
86 intptr_t GpuSIGSYS_Handler(const struct arch_seccomp_data& args, 80 intptr_t GpuSIGSYS_Handler(const struct arch_seccomp_data& args,
87 void* aux_broker_process) { 81 void* aux_broker_process) {
88 RAW_CHECK(aux_broker_process); 82 RAW_CHECK(aux_broker_process);
89 BrokerProcess* broker_process = 83 BrokerProcess* broker_process =
90 static_cast<BrokerProcess*>(aux_broker_process); 84 static_cast<BrokerProcess*>(aux_broker_process);
91 switch (args.nr) { 85 switch (args.nr) {
92 case __NR_access: 86 case __NR_access:
93 return broker_process->Access(reinterpret_cast<const char*>(args.args[0]), 87 return broker_process->Access(reinterpret_cast<const char*>(args.args[0]),
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 DCHECK(!chromeos_arm_gpu); 207 DCHECK(!chromeos_arm_gpu);
214 208
215 DCHECK(!broker_process()); 209 DCHECK(!broker_process());
216 // Create a new broker process. 210 // Create a new broker process.
217 InitGpuBrokerProcess( 211 InitGpuBrokerProcess(
218 GpuBrokerProcessPolicy::Create, 212 GpuBrokerProcessPolicy::Create,
219 std::vector<std::string>(), // No extra files in whitelist. 213 std::vector<std::string>(), // No extra files in whitelist.
220 std::vector<std::string>()); 214 std::vector<std::string>());
221 215
222 if (IsArchitectureX86_64() || IsArchitectureI386()) { 216 if (IsArchitectureX86_64() || IsArchitectureI386()) {
223 // Accelerated video dlopen()'s some shared objects 217 // Accelerated video decode dlopen()'s some shared objects
224 // inside the sandbox, so preload them now. 218 // inside the sandbox, so preload them now.
225 if (IsAcceleratedVideoEnabled()) { 219 if (IsAcceleratedVideoDecodeEnabled()) {
226 const char* I965DrvVideoPath = NULL; 220 const char* I965DrvVideoPath = NULL;
227 221
228 if (IsArchitectureX86_64()) { 222 if (IsArchitectureX86_64()) {
229 I965DrvVideoPath = "/usr/lib64/va/drivers/i965_drv_video.so"; 223 I965DrvVideoPath = "/usr/lib64/va/drivers/i965_drv_video.so";
230 } else if (IsArchitectureI386()) { 224 } else if (IsArchitectureI386()) {
231 I965DrvVideoPath = "/usr/lib/va/drivers/i965_drv_video.so"; 225 I965DrvVideoPath = "/usr/lib/va/drivers/i965_drv_video.so";
232 } 226 }
233 227
234 dlopen(I965DrvVideoPath, RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); 228 dlopen(I965DrvVideoPath, RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE);
235 dlopen("libva.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); 229 dlopen("libva.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 broker_process_ = new BrokerProcess(GetFSDeniedErrno(), 262 broker_process_ = new BrokerProcess(GetFSDeniedErrno(),
269 read_whitelist, 263 read_whitelist,
270 write_whitelist); 264 write_whitelist);
271 // The initialization callback will perform generic initialization and then 265 // The initialization callback will perform generic initialization and then
272 // call broker_sandboxer_callback. 266 // call broker_sandboxer_callback.
273 CHECK(broker_process_->Init(base::Bind(&UpdateProcessTypeAndEnableSandbox, 267 CHECK(broker_process_->Init(base::Bind(&UpdateProcessTypeAndEnableSandbox,
274 broker_sandboxer_allocator))); 268 broker_sandboxer_allocator)));
275 } 269 }
276 270
277 } // namespace content 271 } // namespace content
OLDNEW
« no previous file with comments | « trunk/src/content/common/gpu/media/video_encode_accelerator_unittest.cc ('k') | trunk/src/content/content_common.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698