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

Side by Side Diff: content/browser/compositor/gpu_process_transport_factory.cc

Issue 1365563002: Make channel preemption not require view contexts for hookup (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@wakeup_gpu
Patch Set: rebase Created 5 years, 3 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/compositor/gpu_process_transport_factory.h" 5 #include "content/browser/compositor/gpu_process_transport_factory.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 } 441 }
442 442
443 cc::TaskGraphRunner* GpuProcessTransportFactory::GetTaskGraphRunner() { 443 cc::TaskGraphRunner* GpuProcessTransportFactory::GetTaskGraphRunner() {
444 return task_graph_runner_.get(); 444 return task_graph_runner_.get();
445 } 445 }
446 446
447 ui::ContextFactory* GpuProcessTransportFactory::GetContextFactory() { 447 ui::ContextFactory* GpuProcessTransportFactory::GetContextFactory() {
448 return this; 448 return this;
449 } 449 }
450 450
451 gfx::GLSurfaceHandle GpuProcessTransportFactory::GetSharedSurfaceHandle() {
452 gfx::GLSurfaceHandle handle = gfx::GLSurfaceHandle(
453 gfx::kNullPluginWindow, gfx::NULL_TRANSPORT);
454 handle.parent_client_id =
455 BrowserGpuChannelHostFactory::instance()->GetGpuChannelId();
456 return handle;
457 }
458
459 scoped_ptr<cc::SurfaceIdAllocator> 451 scoped_ptr<cc::SurfaceIdAllocator>
460 GpuProcessTransportFactory::CreateSurfaceIdAllocator() { 452 GpuProcessTransportFactory::CreateSurfaceIdAllocator() {
461 scoped_ptr<cc::SurfaceIdAllocator> allocator = 453 scoped_ptr<cc::SurfaceIdAllocator> allocator =
462 make_scoped_ptr(new cc::SurfaceIdAllocator(next_surface_id_namespace_++)); 454 make_scoped_ptr(new cc::SurfaceIdAllocator(next_surface_id_namespace_++));
463 if (GetSurfaceManager()) 455 if (GetSurfaceManager())
464 allocator->RegisterSurfaceIdNamespace(GetSurfaceManager()); 456 allocator->RegisterSurfaceIdNamespace(GetSurfaceManager());
465 return allocator; 457 return allocator;
466 } 458 }
467 459
468 void GpuProcessTransportFactory::ResizeDisplay(ui::Compositor* compositor, 460 void GpuProcessTransportFactory::ResizeDisplay(ui::Compositor* compositor,
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 DCHECK(!per_compositor_data_[compositor]); 555 DCHECK(!per_compositor_data_[compositor]);
564 556
565 gfx::AcceleratedWidget widget = compositor->widget(); 557 gfx::AcceleratedWidget widget = compositor->widget();
566 GpuSurfaceTracker* tracker = GpuSurfaceTracker::Get(); 558 GpuSurfaceTracker* tracker = GpuSurfaceTracker::Get();
567 559
568 PerCompositorData* data = new PerCompositorData; 560 PerCompositorData* data = new PerCompositorData;
569 if (compositor->widget() == gfx::kNullAcceleratedWidget) { 561 if (compositor->widget() == gfx::kNullAcceleratedWidget) {
570 data->surface_id = 0; 562 data->surface_id = 0;
571 } else { 563 } else {
572 data->surface_id = tracker->AddSurfaceForNativeWidget(widget); 564 data->surface_id = tracker->AddSurfaceForNativeWidget(widget);
565 #if defined(OS_MACOSX) || defined(OS_ANDROID)
566 // On Mac and Android, we can't pass the AcceleratedWidget, which is
567 // process-local, so instead we pass the surface_id, so that we can look up
568 // the AcceleratedWidget on the GPU side or when we receive
569 // GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params.
570 gfx::PluginWindowHandle handle = data->surface_id;
571 #else
572 gfx::PluginWindowHandle handle = widget;
573 #endif
573 tracker->SetSurfaceHandle(data->surface_id, 574 tracker->SetSurfaceHandle(data->surface_id,
574 gfx::GLSurfaceHandle(widget, gfx::NATIVE_DIRECT)); 575 gfx::GLSurfaceHandle(handle, gfx::NATIVE_DIRECT));
575 } 576 }
576 577
577 per_compositor_data_[compositor] = data; 578 per_compositor_data_[compositor] = data;
578 579
579 return data; 580 return data;
580 } 581 }
581 582
582 scoped_ptr<WebGraphicsContext3DCommandBufferImpl> 583 scoped_ptr<WebGraphicsContext3DCommandBufferImpl>
583 GpuProcessTransportFactory::CreateContextCommon( 584 GpuProcessTransportFactory::CreateContextCommon(
584 scoped_refptr<GpuChannelHost> gpu_channel_host, 585 scoped_refptr<GpuChannelHost> gpu_channel_host,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 FOR_EACH_OBSERVER(ImageTransportFactoryObserver, 633 FOR_EACH_OBSERVER(ImageTransportFactoryObserver,
633 observer_list_, 634 observer_list_,
634 OnLostResources()); 635 OnLostResources());
635 636
636 // Kill things that use the shared context before killing the shared context. 637 // Kill things that use the shared context before killing the shared context.
637 lost_gl_helper.reset(); 638 lost_gl_helper.reset();
638 lost_shared_main_thread_contexts = NULL; 639 lost_shared_main_thread_contexts = NULL;
639 } 640 }
640 641
641 } // namespace content 642 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/compositor/gpu_process_transport_factory.h ('k') | content/browser/compositor/image_transport_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698