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

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

Issue 333253002: Add VaapiVideoEncodeAccelerator for HW-accelerated video encode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update pre-sandbox hook to include accelerated encode Created 6 years, 6 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 IsAcceleratedVideoDecodeEnabled() { 75 bool IsAcceleratedVideoEnabled() {
76 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 76 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
77 return !command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode); 77 return !command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode) ||
78 command_line.HasSwitch(switches::kEnableVaapiAcceleratedVideoEncode);
78 } 79 }
79 80
80 intptr_t GpuSIGSYS_Handler(const struct arch_seccomp_data& args, 81 intptr_t GpuSIGSYS_Handler(const struct arch_seccomp_data& args,
81 void* aux_broker_process) { 82 void* aux_broker_process) {
82 RAW_CHECK(aux_broker_process); 83 RAW_CHECK(aux_broker_process);
83 BrokerProcess* broker_process = 84 BrokerProcess* broker_process =
84 static_cast<BrokerProcess*>(aux_broker_process); 85 static_cast<BrokerProcess*>(aux_broker_process);
85 switch (args.nr) { 86 switch (args.nr) {
86 case __NR_access: 87 case __NR_access:
87 return broker_process->Access(reinterpret_cast<const char*>(args.args[0]), 88 return broker_process->Access(reinterpret_cast<const char*>(args.args[0]),
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 DCHECK(!chromeos_arm_gpu); 208 DCHECK(!chromeos_arm_gpu);
208 209
209 DCHECK(!broker_process()); 210 DCHECK(!broker_process());
210 // Create a new broker process. 211 // Create a new broker process.
211 InitGpuBrokerProcess( 212 InitGpuBrokerProcess(
212 GpuBrokerProcessPolicy::Create, 213 GpuBrokerProcessPolicy::Create,
213 std::vector<std::string>(), // No extra files in whitelist. 214 std::vector<std::string>(), // No extra files in whitelist.
214 std::vector<std::string>()); 215 std::vector<std::string>());
215 216
216 if (IsArchitectureX86_64() || IsArchitectureI386()) { 217 if (IsArchitectureX86_64() || IsArchitectureI386()) {
217 // Accelerated video decode dlopen()'s some shared objects 218 // Accelerated video dlopen()'s some shared objects
218 // inside the sandbox, so preload them now. 219 // inside the sandbox, so preload them now.
219 if (IsAcceleratedVideoDecodeEnabled()) { 220 if (IsAcceleratedVideoEnabled()) {
220 const char* I965DrvVideoPath = NULL; 221 const char* I965DrvVideoPath = NULL;
221 222
222 if (IsArchitectureX86_64()) { 223 if (IsArchitectureX86_64()) {
223 I965DrvVideoPath = "/usr/lib64/va/drivers/i965_drv_video.so"; 224 I965DrvVideoPath = "/usr/lib64/va/drivers/i965_drv_video.so";
224 } else if (IsArchitectureI386()) { 225 } else if (IsArchitectureI386()) {
225 I965DrvVideoPath = "/usr/lib/va/drivers/i965_drv_video.so"; 226 I965DrvVideoPath = "/usr/lib/va/drivers/i965_drv_video.so";
226 } 227 }
227 228
228 dlopen(I965DrvVideoPath, RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); 229 dlopen(I965DrvVideoPath, RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE);
229 dlopen("libva.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); 230 dlopen("libva.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 broker_process_ = new BrokerProcess(GetFSDeniedErrno(), 263 broker_process_ = new BrokerProcess(GetFSDeniedErrno(),
263 read_whitelist, 264 read_whitelist,
264 write_whitelist); 265 write_whitelist);
265 // The initialization callback will perform generic initialization and then 266 // The initialization callback will perform generic initialization and then
266 // call broker_sandboxer_callback. 267 // call broker_sandboxer_callback.
267 CHECK(broker_process_->Init(base::Bind(&UpdateProcessTypeAndEnableSandbox, 268 CHECK(broker_process_->Init(base::Bind(&UpdateProcessTypeAndEnableSandbox,
268 broker_sandboxer_allocator))); 269 broker_sandboxer_allocator)));
269 } 270 }
270 271
271 } // namespace content 272 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698