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

Side by Side Diff: gpu/command_buffer/service/in_process_command_buffer.cc

Issue 23234003: Support stream textures with the synchronous compositor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: android clang Created 7 years, 4 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 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 <utility> 8 #include <utility>
9 9
10 #include <GLES2/gl2.h> 10 #include <GLES2/gl2.h>
(...skipping 16 matching lines...) Expand all
27 #include "gpu/command_buffer/service/gl_context_virtual.h" 27 #include "gpu/command_buffer/service/gl_context_virtual.h"
28 #include "gpu/command_buffer/service/gpu_control_service.h" 28 #include "gpu/command_buffer/service/gpu_control_service.h"
29 #include "gpu/command_buffer/service/gpu_scheduler.h" 29 #include "gpu/command_buffer/service/gpu_scheduler.h"
30 #include "gpu/command_buffer/service/image_manager.h" 30 #include "gpu/command_buffer/service/image_manager.h"
31 #include "gpu/command_buffer/service/transfer_buffer_manager.h" 31 #include "gpu/command_buffer/service/transfer_buffer_manager.h"
32 #include "ui/gfx/size.h" 32 #include "ui/gfx/size.h"
33 #include "ui/gl/gl_context.h" 33 #include "ui/gl/gl_context.h"
34 #include "ui/gl/gl_image.h" 34 #include "ui/gl/gl_image.h"
35 #include "ui/gl/gl_share_group.h" 35 #include "ui/gl/gl_share_group.h"
36 36
37 #if defined(OS_ANDROID)
38 #include "gpu/command_buffer/service/stream_texture_manager_in_process_android.h "
39 #include "ui/gl/android/surface_texture_bridge.h"
40 #endif
41
37 namespace gpu { 42 namespace gpu {
38 43
39 namespace { 44 namespace {
40 45
41 static base::LazyInstance<std::set<InProcessCommandBuffer*> > 46 static base::LazyInstance<std::set<InProcessCommandBuffer*> >
42 g_all_shared_contexts = LAZY_INSTANCE_INITIALIZER; 47 g_all_shared_contexts = LAZY_INSTANCE_INITIALIZER;
43 48
44 static bool g_use_virtualized_gl_context = false; 49 static bool g_use_virtualized_gl_context = false;
45 static bool g_uses_explicit_scheduling = false; 50 static bool g_uses_explicit_scheduling = false;
46 static GpuMemoryBufferFactory* g_gpu_memory_buffer_factory = NULL; 51 static GpuMemoryBufferFactory* g_gpu_memory_buffer_factory = NULL;
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 context_group = *it; 377 context_group = *it;
373 DCHECK(context_group->share_resources_); 378 DCHECK(context_group->share_resources_);
374 context_lost_ = context_group->IsContextLost(); 379 context_lost_ = context_group->IsContextLost();
375 break; 380 break;
376 } 381 }
377 } 382 }
378 if (!context_group) 383 if (!context_group)
379 share_group = new gfx::GLShareGroup; 384 share_group = new gfx::GLShareGroup;
380 } 385 }
381 386
387 StreamTextureManager* stream_texture_manager = NULL;
388 #if defined(OS_ANDROID)
389 stream_texture_manager = stream_texture_manager_ =
390 context_group ? context_group->stream_texture_manager_.get()
391 : new StreamTextureManagerInProcess;
392 #endif
393
382 bool bind_generates_resource = false; 394 bool bind_generates_resource = false;
383 decoder_.reset(gles2::GLES2Decoder::Create( 395 decoder_.reset(gles2::GLES2Decoder::Create(
384 context_group ? context_group->decoder_->GetContextGroup() 396 context_group ? context_group->decoder_->GetContextGroup()
385 : new gles2::ContextGroup( 397 : new gles2::ContextGroup(NULL,
386 NULL, NULL, NULL, NULL, bind_generates_resource))); 398 NULL,
399 NULL,
400 stream_texture_manager,
401 bind_generates_resource)));
387 402
388 gpu_scheduler_.reset( 403 gpu_scheduler_.reset(
389 new GpuScheduler(command_buffer.get(), decoder_.get(), decoder_.get())); 404 new GpuScheduler(command_buffer.get(), decoder_.get(), decoder_.get()));
390 command_buffer->SetGetBufferChangeCallback(base::Bind( 405 command_buffer->SetGetBufferChangeCallback(base::Bind(
391 &GpuScheduler::SetGetBuffer, base::Unretained(gpu_scheduler_.get()))); 406 &GpuScheduler::SetGetBuffer, base::Unretained(gpu_scheduler_.get())));
392 command_buffer_ = command_buffer.Pass(); 407 command_buffer_ = command_buffer.Pass();
393 408
394 gpu_control_.reset( 409 gpu_control_.reset(
395 new GpuControlService(decoder_->GetContextGroup()->image_manager(), 410 new GpuControlService(decoder_->GetContextGroup()->image_manager(),
396 g_gpu_memory_buffer_factory)); 411 g_gpu_memory_buffer_factory));
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 // ownership. 720 // ownership.
706 scoped_ptr<base::Closure> scoped_callback(new base::Closure(callback)); 721 scoped_ptr<base::Closure> scoped_callback(new base::Closure(callback));
707 base::Closure callback_on_client_thread = 722 base::Closure callback_on_client_thread =
708 base::Bind(&RunOnTargetThread, base::Passed(&scoped_callback)); 723 base::Bind(&RunOnTargetThread, base::Passed(&scoped_callback));
709 base::Closure wrapped_callback = 724 base::Closure wrapped_callback =
710 base::Bind(&PostCallback, base::MessageLoopProxy::current(), 725 base::Bind(&PostCallback, base::MessageLoopProxy::current(),
711 callback_on_client_thread); 726 callback_on_client_thread);
712 return wrapped_callback; 727 return wrapped_callback;
713 } 728 }
714 729
730 #if defined(OS_ANDROID)
731 scoped_refptr<gfx::SurfaceTextureBridge>
732 InProcessCommandBuffer::GetSurfaceTexture(uint32 stream_id) {
733 DCHECK(stream_texture_manager_);
734 return stream_texture_manager_->GetSurfaceTexture(stream_id);
735 }
736 #endif
737
715 // static 738 // static
716 void InProcessCommandBuffer::EnableVirtualizedContext() { 739 void InProcessCommandBuffer::EnableVirtualizedContext() {
717 g_use_virtualized_gl_context = true; 740 g_use_virtualized_gl_context = true;
718 } 741 }
719 742
720 // static 743 // static
721 void InProcessCommandBuffer::SetScheduleCallback( 744 void InProcessCommandBuffer::SetScheduleCallback(
722 const base::Closure& callback) { 745 const base::Closure& callback) {
723 DCHECK(!g_uses_explicit_scheduling); 746 DCHECK(!g_uses_explicit_scheduling);
724 DCHECK(!SchedulerClientBase::HasClients()); 747 DCHECK(!SchedulerClientBase::HasClients());
725 g_uses_explicit_scheduling = true; 748 g_uses_explicit_scheduling = true;
726 g_gpu_queue.Get().SetScheduleCallback(callback); 749 g_gpu_queue.Get().SetScheduleCallback(callback);
727 } 750 }
728 751
729 // static 752 // static
730 void InProcessCommandBuffer::ProcessGpuWorkOnCurrentThread() { 753 void InProcessCommandBuffer::ProcessGpuWorkOnCurrentThread() {
731 g_gpu_queue.Get().RunTasks(); 754 g_gpu_queue.Get().RunTasks();
732 } 755 }
733 756
734 // static 757 // static
735 void InProcessCommandBuffer::SetGpuMemoryBufferFactory( 758 void InProcessCommandBuffer::SetGpuMemoryBufferFactory(
736 GpuMemoryBufferFactory* factory) { 759 GpuMemoryBufferFactory* factory) {
737 g_gpu_memory_buffer_factory = factory; 760 g_gpu_memory_buffer_factory = factory;
738 } 761 }
739 762
740 } // namespace gpu 763 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/in_process_command_buffer.h ('k') | gpu/command_buffer/service/stream_texture_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698