OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "gpu/command_buffer/service/in_process_command_buffer.h" | 5 #include "gpu/command_buffer/service/in_process_command_buffer.h" |
6 | 6 |
7 #include <queue> | 7 #include <queue> |
8 #include <set> | 8 #include <set> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 | 94 |
95 GpuInProcessThread::~GpuInProcessThread() { | 95 GpuInProcessThread::~GpuInProcessThread() { |
96 Stop(); | 96 Stop(); |
97 } | 97 } |
98 | 98 |
99 void GpuInProcessThread::ScheduleTask(const base::Closure& task) { | 99 void GpuInProcessThread::ScheduleTask(const base::Closure& task) { |
100 message_loop()->PostTask(FROM_HERE, task); | 100 message_loop()->PostTask(FROM_HERE, task); |
101 } | 101 } |
102 | 102 |
103 void GpuInProcessThread::ScheduleIdleWork(const base::Closure& callback) { | 103 void GpuInProcessThread::ScheduleIdleWork(const base::Closure& callback) { |
| 104 // Match delay with GpuCommandBufferStub. |
104 message_loop()->PostDelayedTask( | 105 message_loop()->PostDelayedTask( |
105 FROM_HERE, callback, base::TimeDelta::FromMilliseconds(5)); | 106 FROM_HERE, callback, base::TimeDelta::FromMilliseconds(2)); |
106 } | 107 } |
107 | 108 |
108 scoped_refptr<gles2::ShaderTranslatorCache> | 109 scoped_refptr<gles2::ShaderTranslatorCache> |
109 GpuInProcessThread::shader_translator_cache() { | 110 GpuInProcessThread::shader_translator_cache() { |
110 if (!shader_translator_cache_.get()) | 111 if (!shader_translator_cache_.get()) |
111 shader_translator_cache_ = new gpu::gles2::ShaderTranslatorCache; | 112 shader_translator_cache_ = new gpu::gles2::ShaderTranslatorCache; |
112 return shader_translator_cache_; | 113 return shader_translator_cache_; |
113 } | 114 } |
114 | 115 |
115 struct GpuInProcessThreadHolder { | 116 struct GpuInProcessThreadHolder { |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 return gfx::GpuMemoryBufferHandle(); | 232 return gfx::GpuMemoryBufferHandle(); |
232 } | 233 } |
233 } | 234 } |
234 | 235 |
235 } // anonyous namespace | 236 } // anonyous namespace |
236 | 237 |
237 InProcessCommandBuffer::Service::Service() {} | 238 InProcessCommandBuffer::Service::Service() {} |
238 | 239 |
239 InProcessCommandBuffer::Service::~Service() {} | 240 InProcessCommandBuffer::Service::~Service() {} |
240 | 241 |
| 242 scoped_refptr<gfx::GLShareGroup> |
| 243 InProcessCommandBuffer::Service::share_group() { |
| 244 if (!share_group_.get()) |
| 245 share_group_ = new gfx::GLShareGroup; |
| 246 return share_group_; |
| 247 } |
| 248 |
241 scoped_refptr<gles2::MailboxManager> | 249 scoped_refptr<gles2::MailboxManager> |
242 InProcessCommandBuffer::Service::mailbox_manager() { | 250 InProcessCommandBuffer::Service::mailbox_manager() { |
243 if (!mailbox_manager_.get()) { | 251 if (!mailbox_manager_.get()) { |
244 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 252 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
245 switches::kEnableThreadedTextureMailboxes)) { | 253 switches::kEnableThreadedTextureMailboxes)) { |
246 mailbox_manager_ = new gles2::MailboxManagerSync(); | 254 mailbox_manager_ = new gles2::MailboxManagerSync(); |
247 } else { | 255 } else { |
248 mailbox_manager_ = new gles2::MailboxManagerImpl(); | 256 mailbox_manager_ = new gles2::MailboxManagerImpl(); |
249 } | 257 } |
250 } | 258 } |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 command_buffer->SetParseErrorCallback(base::Bind( | 398 command_buffer->SetParseErrorCallback(base::Bind( |
391 &InProcessCommandBuffer::OnContextLost, gpu_thread_weak_ptr_)); | 399 &InProcessCommandBuffer::OnContextLost, gpu_thread_weak_ptr_)); |
392 | 400 |
393 if (!command_buffer->Initialize()) { | 401 if (!command_buffer->Initialize()) { |
394 LOG(ERROR) << "Could not initialize command buffer."; | 402 LOG(ERROR) << "Could not initialize command buffer."; |
395 DestroyOnGpuThread(); | 403 DestroyOnGpuThread(); |
396 return false; | 404 return false; |
397 } | 405 } |
398 | 406 |
399 gl_share_group_ = params.context_group | 407 gl_share_group_ = params.context_group |
400 ? params.context_group->gl_share_group_.get() | 408 ? params.context_group->gl_share_group_ |
401 : new gfx::GLShareGroup; | 409 : service_->share_group(); |
402 | 410 |
403 #if defined(OS_ANDROID) | 411 #if defined(OS_ANDROID) |
404 stream_texture_manager_.reset(new StreamTextureManagerInProcess); | 412 stream_texture_manager_.reset(new StreamTextureManagerInProcess); |
405 #endif | 413 #endif |
406 | 414 |
407 bool bind_generates_resource = false; | 415 bool bind_generates_resource = false; |
408 decoder_.reset(gles2::GLES2Decoder::Create( | 416 decoder_.reset(gles2::GLES2Decoder::Create( |
409 params.context_group | 417 params.context_group |
410 ? params.context_group->decoder_->GetContextGroup() | 418 ? params.context_group->decoder_->GetContextGroup() |
411 : new gles2::ContextGroup(service_->mailbox_manager(), | 419 : new gles2::ContextGroup(service_->mailbox_manager(), |
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
949 | 957 |
950 #if defined(OS_ANDROID) | 958 #if defined(OS_ANDROID) |
951 scoped_refptr<gfx::SurfaceTexture> | 959 scoped_refptr<gfx::SurfaceTexture> |
952 InProcessCommandBuffer::GetSurfaceTexture(uint32 stream_id) { | 960 InProcessCommandBuffer::GetSurfaceTexture(uint32 stream_id) { |
953 DCHECK(stream_texture_manager_); | 961 DCHECK(stream_texture_manager_); |
954 return stream_texture_manager_->GetSurfaceTexture(stream_id); | 962 return stream_texture_manager_->GetSurfaceTexture(stream_id); |
955 } | 963 } |
956 #endif | 964 #endif |
957 | 965 |
958 } // namespace gpu | 966 } // namespace gpu |
OLD | NEW |