| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/browser/gpu/browser_gpu_channel_host_factory.h" | 5 #include "content/browser/gpu/browser_gpu_channel_host_factory.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/profiler/scoped_tracker.h" | 10 #include "base/profiler/scoped_tracker.h" |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 scoped_ptr<base::SharedMemory> shm(new base::SharedMemory()); | 273 scoped_ptr<base::SharedMemory> shm(new base::SharedMemory()); |
| 274 if (!shm->CreateAnonymous(size)) | 274 if (!shm->CreateAnonymous(size)) |
| 275 return scoped_ptr<base::SharedMemory>(); | 275 return scoped_ptr<base::SharedMemory>(); |
| 276 return shm; | 276 return shm; |
| 277 } | 277 } |
| 278 | 278 |
| 279 // Blocking the UI thread to open a GPU channel is not supported on Android. | 279 // Blocking the UI thread to open a GPU channel is not supported on Android. |
| 280 // (Opening the initial channel to a child process involves handling a reply | 280 // (Opening the initial channel to a child process involves handling a reply |
| 281 // task on the UI thread first, so we cannot block here.) | 281 // task on the UI thread first, so we cannot block here.) |
| 282 #if !defined(OS_ANDROID) | 282 #if !defined(OS_ANDROID) |
| 283 GpuChannelHost* BrowserGpuChannelHostFactory::EstablishGpuChannelSync( | 283 gpu::GpuChannelHost* BrowserGpuChannelHostFactory::EstablishGpuChannelSync( |
| 284 CauseForGpuLaunch cause_for_gpu_launch) { | 284 CauseForGpuLaunch cause_for_gpu_launch) { |
| 285 EstablishGpuChannel(cause_for_gpu_launch, base::Closure()); | 285 EstablishGpuChannel(cause_for_gpu_launch, base::Closure()); |
| 286 | 286 |
| 287 if (pending_request_.get()) | 287 if (pending_request_.get()) |
| 288 pending_request_->Wait(); | 288 pending_request_->Wait(); |
| 289 | 289 |
| 290 return gpu_channel_.get(); | 290 return gpu_channel_.get(); |
| 291 } | 291 } |
| 292 #endif | 292 #endif |
| 293 | 293 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 310 } | 310 } |
| 311 | 311 |
| 312 if (!callback.is_null()) { | 312 if (!callback.is_null()) { |
| 313 if (gpu_channel_.get()) | 313 if (gpu_channel_.get()) |
| 314 callback.Run(); | 314 callback.Run(); |
| 315 else | 315 else |
| 316 established_callbacks_.push_back(callback); | 316 established_callbacks_.push_back(callback); |
| 317 } | 317 } |
| 318 } | 318 } |
| 319 | 319 |
| 320 GpuChannelHost* BrowserGpuChannelHostFactory::GetGpuChannel() { | 320 gpu::GpuChannelHost* BrowserGpuChannelHostFactory::GetGpuChannel() { |
| 321 if (gpu_channel_.get() && !gpu_channel_->IsLost()) | 321 if (gpu_channel_.get() && !gpu_channel_->IsLost()) |
| 322 return gpu_channel_.get(); | 322 return gpu_channel_.get(); |
| 323 | 323 |
| 324 return NULL; | 324 return NULL; |
| 325 } | 325 } |
| 326 | 326 |
| 327 void BrowserGpuChannelHostFactory::GpuChannelEstablished() { | 327 void BrowserGpuChannelHostFactory::GpuChannelEstablished() { |
| 328 DCHECK(IsMainThread()); | 328 DCHECK(IsMainThread()); |
| 329 DCHECK(pending_request_.get()); | 329 DCHECK(pending_request_.get()); |
| 330 if (pending_request_->channel_handle().name.empty()) { | 330 if (pending_request_->channel_handle().name.empty()) { |
| 331 DCHECK(!gpu_channel_.get()); | 331 DCHECK(!gpu_channel_.get()); |
| 332 } else { | 332 } else { |
| 333 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/466866 | 333 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/466866 |
| 334 // is fixed. | 334 // is fixed. |
| 335 tracked_objects::ScopedTracker tracking_profile1( | 335 tracked_objects::ScopedTracker tracking_profile1( |
| 336 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 336 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 337 "466866 BrowserGpuChannelHostFactory::GpuChannelEstablished1")); | 337 "466866 BrowserGpuChannelHostFactory::GpuChannelEstablished1")); |
| 338 GetContentClient()->SetGpuInfo(pending_request_->gpu_info()); | 338 GetContentClient()->SetGpuInfo(pending_request_->gpu_info()); |
| 339 gpu_channel_ = GpuChannelHost::Create( | 339 gpu_channel_ = gpu::GpuChannelHost::Create( |
| 340 this, gpu_client_id_, pending_request_->gpu_info(), | 340 this, gpu_client_id_, pending_request_->gpu_info(), |
| 341 pending_request_->channel_handle(), shutdown_event_.get(), | 341 pending_request_->channel_handle(), shutdown_event_.get(), |
| 342 gpu_memory_buffer_manager_.get()); | 342 gpu_memory_buffer_manager_.get()); |
| 343 } | 343 } |
| 344 gpu_host_id_ = pending_request_->gpu_host_id(); | 344 gpu_host_id_ = pending_request_->gpu_host_id(); |
| 345 pending_request_ = NULL; | 345 pending_request_ = NULL; |
| 346 | 346 |
| 347 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/466866 is | 347 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/466866 is |
| 348 // fixed. | 348 // fixed. |
| 349 tracked_objects::ScopedTracker tracking_profile2( | 349 tracked_objects::ScopedTracker tracking_profile2( |
| (...skipping 18 matching lines...) Expand all Loading... |
| 368 } | 368 } |
| 369 | 369 |
| 370 // static | 370 // static |
| 371 void BrowserGpuChannelHostFactory::InitializeShaderDiskCacheOnIO( | 371 void BrowserGpuChannelHostFactory::InitializeShaderDiskCacheOnIO( |
| 372 int gpu_client_id, | 372 int gpu_client_id, |
| 373 const base::FilePath& cache_dir) { | 373 const base::FilePath& cache_dir) { |
| 374 ShaderCacheFactory::GetInstance()->SetCacheInfo(gpu_client_id, cache_dir); | 374 ShaderCacheFactory::GetInstance()->SetCacheInfo(gpu_client_id, cache_dir); |
| 375 } | 375 } |
| 376 | 376 |
| 377 } // namespace content | 377 } // namespace content |
| OLD | NEW |