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 13 matching lines...) Expand all Loading... |
24 #include "gpu/command_buffer/service/gl_context_virtual.h" | 24 #include "gpu/command_buffer/service/gl_context_virtual.h" |
25 #include "gpu/command_buffer/service/gpu_scheduler.h" | 25 #include "gpu/command_buffer/service/gpu_scheduler.h" |
26 #include "gpu/command_buffer/service/gpu_switches.h" | 26 #include "gpu/command_buffer/service/gpu_switches.h" |
27 #include "gpu/command_buffer/service/image_factory.h" | 27 #include "gpu/command_buffer/service/image_factory.h" |
28 #include "gpu/command_buffer/service/image_manager.h" | 28 #include "gpu/command_buffer/service/image_manager.h" |
29 #include "gpu/command_buffer/service/mailbox_manager_impl.h" | 29 #include "gpu/command_buffer/service/mailbox_manager_impl.h" |
30 #include "gpu/command_buffer/service/mailbox_manager_sync.h" | 30 #include "gpu/command_buffer/service/mailbox_manager_sync.h" |
31 #include "gpu/command_buffer/service/memory_tracking.h" | 31 #include "gpu/command_buffer/service/memory_tracking.h" |
32 #include "gpu/command_buffer/service/query_manager.h" | 32 #include "gpu/command_buffer/service/query_manager.h" |
33 #include "gpu/command_buffer/service/transfer_buffer_manager.h" | 33 #include "gpu/command_buffer/service/transfer_buffer_manager.h" |
| 34 #include "gpu/command_buffer/service/valuebuffer_manager.h" |
34 #include "ui/gfx/size.h" | 35 #include "ui/gfx/size.h" |
35 #include "ui/gl/gl_context.h" | 36 #include "ui/gl/gl_context.h" |
36 #include "ui/gl/gl_image.h" | 37 #include "ui/gl/gl_image.h" |
37 #include "ui/gl/gl_share_group.h" | 38 #include "ui/gl/gl_share_group.h" |
38 | 39 |
39 #if defined(OS_ANDROID) | 40 #if defined(OS_ANDROID) |
40 #include "gpu/command_buffer/service/stream_texture_manager_in_process_android.h
" | 41 #include "gpu/command_buffer/service/stream_texture_manager_in_process_android.h
" |
41 #include "ui/gl/android/surface_texture.h" | 42 #include "ui/gl/android/surface_texture.h" |
42 #endif | 43 #endif |
43 | 44 |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 188 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
188 switches::kEnableThreadedTextureMailboxes)) { | 189 switches::kEnableThreadedTextureMailboxes)) { |
189 mailbox_manager_ = new gles2::MailboxManagerSync(); | 190 mailbox_manager_ = new gles2::MailboxManagerSync(); |
190 } else { | 191 } else { |
191 mailbox_manager_ = new gles2::MailboxManagerImpl(); | 192 mailbox_manager_ = new gles2::MailboxManagerImpl(); |
192 } | 193 } |
193 } | 194 } |
194 return mailbox_manager_; | 195 return mailbox_manager_; |
195 } | 196 } |
196 | 197 |
| 198 scoped_refptr<gles2::ValuebufferManager> |
| 199 InProcessCommandBuffer::Service::valuebuffer_manager() { |
| 200 if (!valuebuffer_manager_.get()) { |
| 201 valuebuffer_manager_ = new gles2::ValuebufferManager(); |
| 202 } |
| 203 return valuebuffer_manager_; |
| 204 } |
| 205 |
197 scoped_refptr<InProcessCommandBuffer::Service> | 206 scoped_refptr<InProcessCommandBuffer::Service> |
198 InProcessCommandBuffer::GetDefaultService() { | 207 InProcessCommandBuffer::GetDefaultService() { |
199 base::AutoLock lock(default_thread_clients_lock_.Get()); | 208 base::AutoLock lock(default_thread_clients_lock_.Get()); |
200 scoped_refptr<Service> service; | 209 scoped_refptr<Service> service; |
201 if (!default_thread_clients_.Get().empty()) { | 210 if (!default_thread_clients_.Get().empty()) { |
202 InProcessCommandBuffer* other = *default_thread_clients_.Get().begin(); | 211 InProcessCommandBuffer* other = *default_thread_clients_.Get().begin(); |
203 service = other->service_; | 212 service = other->service_; |
204 DCHECK(service.get()); | 213 DCHECK(service.get()); |
205 } else { | 214 } else { |
206 service = new GpuInProcessThread; | 215 service = new GpuInProcessThread; |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 | 357 |
349 #if defined(OS_ANDROID) | 358 #if defined(OS_ANDROID) |
350 stream_texture_manager_.reset(new StreamTextureManagerInProcess); | 359 stream_texture_manager_.reset(new StreamTextureManagerInProcess); |
351 #endif | 360 #endif |
352 | 361 |
353 bool bind_generates_resource = false; | 362 bool bind_generates_resource = false; |
354 decoder_.reset(gles2::GLES2Decoder::Create( | 363 decoder_.reset(gles2::GLES2Decoder::Create( |
355 params.context_group | 364 params.context_group |
356 ? params.context_group->decoder_->GetContextGroup() | 365 ? params.context_group->decoder_->GetContextGroup() |
357 : new gles2::ContextGroup(service_->mailbox_manager(), | 366 : new gles2::ContextGroup(service_->mailbox_manager(), |
| 367 service_->valuebuffer_manager(), |
358 NULL, | 368 NULL, |
359 service_->shader_translator_cache(), | 369 service_->shader_translator_cache(), |
360 NULL, | 370 NULL, |
361 bind_generates_resource))); | 371 bind_generates_resource))); |
362 | 372 |
363 gpu_scheduler_.reset( | 373 gpu_scheduler_.reset( |
364 new GpuScheduler(command_buffer.get(), decoder_.get(), decoder_.get())); | 374 new GpuScheduler(command_buffer.get(), decoder_.get(), decoder_.get())); |
365 command_buffer->SetGetBufferChangeCallback(base::Bind( | 375 command_buffer->SetGetBufferChangeCallback(base::Bind( |
366 &GpuScheduler::SetGetBuffer, base::Unretained(gpu_scheduler_.get()))); | 376 &GpuScheduler::SetGetBuffer, base::Unretained(gpu_scheduler_.get()))); |
367 command_buffer_ = command_buffer.Pass(); | 377 command_buffer_ = command_buffer.Pass(); |
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
874 | 884 |
875 #if defined(OS_ANDROID) | 885 #if defined(OS_ANDROID) |
876 scoped_refptr<gfx::SurfaceTexture> | 886 scoped_refptr<gfx::SurfaceTexture> |
877 InProcessCommandBuffer::GetSurfaceTexture(uint32 stream_id) { | 887 InProcessCommandBuffer::GetSurfaceTexture(uint32 stream_id) { |
878 DCHECK(stream_texture_manager_); | 888 DCHECK(stream_texture_manager_); |
879 return stream_texture_manager_->GetSurfaceTexture(stream_id); | 889 return stream_texture_manager_->GetSurfaceTexture(stream_id); |
880 } | 890 } |
881 #endif | 891 #endif |
882 | 892 |
883 } // namespace gpu | 893 } // namespace gpu |
OLD | NEW |