| Index: cc/surfaces/deferred_gpu_command_service.cc
|
| diff --git a/cc/surfaces/deferred_gpu_command_service.cc b/cc/surfaces/deferred_gpu_command_service.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4915096cbe81db394173ba85990496b114e77d91
|
| --- /dev/null
|
| +++ b/cc/surfaces/deferred_gpu_command_service.cc
|
| @@ -0,0 +1,78 @@
|
| +// Copyright 2016 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.
|
| +
|
| +#include "cc/surfaces/deferred_gpu_command_service.h"
|
| +
|
| +#include "base/lazy_instance.h"
|
| +#include "base/threading/thread_task_runner_handle.h"
|
| +
|
| +namespace cc {
|
| +
|
| +DeferredGpuCommandService::DeferredGpuCommandService(
|
| + gpu::SyncPointManager* sync_point_manager,
|
| + gpu::gles2::MailboxManager* mailbox_manager,
|
| + scoped_refptr<gl::GLShareGroup> share_group)
|
| + : task_runner_(base::ThreadTaskRunnerHandle::Get()),
|
| + sync_point_manager_(sync_point_manager),
|
| + share_group_(share_group) {
|
| + mailbox_manager_ = mailbox_manager;
|
| +}
|
| +
|
| +void DeferredGpuCommandService::ScheduleTask(const base::Closure& task) {
|
| + task_runner_->PostTask(FROM_HERE, task);
|
| +}
|
| +
|
| +void DeferredGpuCommandService::ScheduleDelayedWork(const base::Closure& task) {
|
| + task_runner_->PostDelayedTask(FROM_HERE, task,
|
| + base::TimeDelta::FromMilliseconds(2));
|
| +}
|
| +bool DeferredGpuCommandService::UseVirtualizedGLContexts() {
|
| + return true;
|
| +}
|
| +
|
| +scoped_refptr<gpu::gles2::ShaderTranslatorCache>
|
| +DeferredGpuCommandService::shader_translator_cache() {
|
| + if (!shader_translator_cache_) {
|
| + shader_translator_cache_ = make_scoped_refptr(
|
| + new gpu::gles2::ShaderTranslatorCache(gpu_preferences()));
|
| + }
|
| + return shader_translator_cache_;
|
| +}
|
| +
|
| +scoped_refptr<gpu::gles2::FramebufferCompletenessCache>
|
| +DeferredGpuCommandService::framebuffer_completeness_cache() {
|
| + if (!framebuffer_completeness_cache_.get()) {
|
| + framebuffer_completeness_cache_ =
|
| + make_scoped_refptr(new gpu::gles2::FramebufferCompletenessCache);
|
| + }
|
| + return framebuffer_completeness_cache_;
|
| +}
|
| +
|
| +gpu::SyncPointManager* DeferredGpuCommandService::sync_point_manager() {
|
| + return sync_point_manager_;
|
| +}
|
| +
|
| +void DeferredGpuCommandService::AddRef() const {
|
| + base::RefCountedThreadSafe<DeferredGpuCommandService>::AddRef();
|
| +}
|
| +
|
| +void DeferredGpuCommandService::Release() const {
|
| + base::RefCountedThreadSafe<DeferredGpuCommandService>::Release();
|
| +}
|
| +
|
| +const scoped_refptr<gl::GLShareGroup>&
|
| +DeferredGpuCommandService::GetShareGroup() const {
|
| + return share_group_;
|
| +}
|
| +
|
| +bool DeferredGpuCommandService::BlockThreadOnWaitSyncToken() const {
|
| + return false;
|
| +}
|
| +
|
| +DeferredGpuCommandService::~DeferredGpuCommandService() {
|
| + base::AutoLock lock(tasks_lock_);
|
| + DCHECK(tasks_.empty());
|
| +}
|
| +
|
| +} // namespace cc
|
|
|