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

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: fix build and broken 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 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 } 435 }
436 436
437 cc::TaskGraphRunner* GpuProcessTransportFactory::GetTaskGraphRunner() { 437 cc::TaskGraphRunner* GpuProcessTransportFactory::GetTaskGraphRunner() {
438 return task_graph_runner_.get(); 438 return task_graph_runner_.get();
439 } 439 }
440 440
441 ui::ContextFactory* GpuProcessTransportFactory::GetContextFactory() { 441 ui::ContextFactory* GpuProcessTransportFactory::GetContextFactory() {
442 return this; 442 return this;
443 } 443 }
444 444
445 gfx::GLSurfaceHandle GpuProcessTransportFactory::GetSharedSurfaceHandle() {
446 gfx::GLSurfaceHandle handle = gfx::GLSurfaceHandle(
447 gfx::kNullPluginWindow, gfx::NULL_TRANSPORT);
448 handle.parent_client_id =
449 BrowserGpuChannelHostFactory::instance()->GetGpuChannelId();
450 return handle;
451 }
452
453 scoped_ptr<cc::SurfaceIdAllocator> 445 scoped_ptr<cc::SurfaceIdAllocator>
454 GpuProcessTransportFactory::CreateSurfaceIdAllocator() { 446 GpuProcessTransportFactory::CreateSurfaceIdAllocator() {
455 scoped_ptr<cc::SurfaceIdAllocator> allocator = 447 scoped_ptr<cc::SurfaceIdAllocator> allocator =
456 make_scoped_ptr(new cc::SurfaceIdAllocator(next_surface_id_namespace_++)); 448 make_scoped_ptr(new cc::SurfaceIdAllocator(next_surface_id_namespace_++));
457 if (GetSurfaceManager()) 449 if (GetSurfaceManager())
458 allocator->RegisterSurfaceIdNamespace(GetSurfaceManager()); 450 allocator->RegisterSurfaceIdNamespace(GetSurfaceManager());
459 return allocator; 451 return allocator;
460 } 452 }
461 453
462 void GpuProcessTransportFactory::ResizeDisplay(ui::Compositor* compositor, 454 void GpuProcessTransportFactory::ResizeDisplay(ui::Compositor* compositor,
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 DCHECK(!per_compositor_data_[compositor]); 549 DCHECK(!per_compositor_data_[compositor]);
558 550
559 gfx::AcceleratedWidget widget = compositor->widget(); 551 gfx::AcceleratedWidget widget = compositor->widget();
560 GpuSurfaceTracker* tracker = GpuSurfaceTracker::Get(); 552 GpuSurfaceTracker* tracker = GpuSurfaceTracker::Get();
561 553
562 PerCompositorData* data = new PerCompositorData; 554 PerCompositorData* data = new PerCompositorData;
563 if (compositor->widget() == gfx::kNullAcceleratedWidget) { 555 if (compositor->widget() == gfx::kNullAcceleratedWidget) {
564 data->surface_id = 0; 556 data->surface_id = 0;
565 } else { 557 } else {
566 data->surface_id = tracker->AddSurfaceForNativeWidget(widget); 558 data->surface_id = tracker->AddSurfaceForNativeWidget(widget);
559 #if defined(OS_MACOSX)
no sievers 2015/09/23 21:53:21 While you're at it and are cleaning up the types,
piman 2015/09/23 23:33:37 Yes, good point, done.
560 // On Mac, we can't pass the AcceleratedWidget, which is process-local, so
561 // instead we pass the surface_id, so that we can look up the
562 // AcceleratedWidget when we receive
563 // GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params.
564 gfx::PluginWindowHandle handle = data->surface_id;
565 #else
566 gfx::PluginWindowHandle handle = widget;
567 #endif
567 tracker->SetSurfaceHandle(data->surface_id, 568 tracker->SetSurfaceHandle(data->surface_id,
568 gfx::GLSurfaceHandle(widget, gfx::NATIVE_DIRECT)); 569 gfx::GLSurfaceHandle(handle, gfx::NATIVE_DIRECT));
569 } 570 }
570 571
571 per_compositor_data_[compositor] = data; 572 per_compositor_data_[compositor] = data;
572 573
573 return data; 574 return data;
574 } 575 }
575 576
576 scoped_ptr<WebGraphicsContext3DCommandBufferImpl> 577 scoped_ptr<WebGraphicsContext3DCommandBufferImpl>
577 GpuProcessTransportFactory::CreateContextCommon( 578 GpuProcessTransportFactory::CreateContextCommon(
578 scoped_refptr<GpuChannelHost> gpu_channel_host, 579 scoped_refptr<GpuChannelHost> gpu_channel_host,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 FOR_EACH_OBSERVER(ImageTransportFactoryObserver, 627 FOR_EACH_OBSERVER(ImageTransportFactoryObserver,
627 observer_list_, 628 observer_list_,
628 OnLostResources()); 629 OnLostResources());
629 630
630 // Kill things that use the shared context before killing the shared context. 631 // Kill things that use the shared context before killing the shared context.
631 lost_gl_helper.reset(); 632 lost_gl_helper.reset();
632 lost_shared_main_thread_contexts = NULL; 633 lost_shared_main_thread_contexts = NULL;
633 } 634 }
634 635
635 } // namespace content 636 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698