| OLD | NEW |
| 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 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 481 context_provider, compositor->vsync_manager(), | 481 context_provider, compositor->vsync_manager(), |
| 482 begin_frame_source.get(), | 482 begin_frame_source.get(), |
| 483 std::unique_ptr<display_compositor:: | 483 std::unique_ptr<display_compositor:: |
| 484 CompositorOverlayCandidateValidator>())); | 484 CompositorOverlayCandidateValidator>())); |
| 485 } else if (capabilities.surfaceless) { | 485 } else if (capabilities.surfaceless) { |
| 486 #if defined(OS_MACOSX) | 486 #if defined(OS_MACOSX) |
| 487 display_output_surface = base::WrapUnique(new GpuOutputSurfaceMac( | 487 display_output_surface = base::WrapUnique(new GpuOutputSurfaceMac( |
| 488 context_provider, data->surface_handle, compositor->vsync_manager(), | 488 context_provider, data->surface_handle, compositor->vsync_manager(), |
| 489 begin_frame_source.get(), | 489 begin_frame_source.get(), |
| 490 CreateOverlayCandidateValidator(compositor->widget()), | 490 CreateOverlayCandidateValidator(compositor->widget()), |
| 491 BrowserGpuMemoryBufferManager::current())); | 491 GetGpuMemoryBufferManager())); |
| 492 #else | 492 #else |
| 493 display_output_surface = | 493 display_output_surface = |
| 494 base::WrapUnique(new GpuSurfacelessBrowserCompositorOutputSurface( | 494 base::WrapUnique(new GpuSurfacelessBrowserCompositorOutputSurface( |
| 495 context_provider, data->surface_handle, | 495 context_provider, data->surface_handle, |
| 496 compositor->vsync_manager(), begin_frame_source.get(), | 496 compositor->vsync_manager(), begin_frame_source.get(), |
| 497 CreateOverlayCandidateValidator(compositor->widget()), | 497 CreateOverlayCandidateValidator(compositor->widget()), |
| 498 GL_TEXTURE_2D, GL_RGB, ui::DisplaySnapshot::PrimaryFormat(), | 498 GL_TEXTURE_2D, GL_RGB, ui::DisplaySnapshot::PrimaryFormat(), |
| 499 BrowserGpuMemoryBufferManager::current())); | 499 GetGpuMemoryBufferManager())); |
| 500 #endif | 500 #endif |
| 501 } else { | 501 } else { |
| 502 std::unique_ptr<display_compositor::CompositorOverlayCandidateValidator> | 502 std::unique_ptr<display_compositor::CompositorOverlayCandidateValidator> |
| 503 validator; | 503 validator; |
| 504 const bool use_mus = IsUsingMus(); | 504 const bool use_mus = IsUsingMus(); |
| 505 #if !defined(OS_MACOSX) | 505 #if !defined(OS_MACOSX) |
| 506 // Overlays are only supported on surfaceless output surfaces on Mac. | 506 // Overlays are only supported on surfaceless output surfaces on Mac. |
| 507 if (!use_mus) | 507 if (!use_mus) |
| 508 validator = CreateOverlayCandidateValidator(compositor->widget()); | 508 validator = CreateOverlayCandidateValidator(compositor->widget()); |
| 509 #endif | 509 #endif |
| (...skipping 27 matching lines...) Expand all Loading... |
| 537 compositor->widget()); | 537 compositor->widget()); |
| 538 #endif | 538 #endif |
| 539 | 539 |
| 540 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler( | 540 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler( |
| 541 begin_frame_source.get(), compositor->task_runner().get(), | 541 begin_frame_source.get(), compositor->task_runner().get(), |
| 542 display_output_surface->capabilities().max_frames_pending)); | 542 display_output_surface->capabilities().max_frames_pending)); |
| 543 | 543 |
| 544 // The Display owns and uses the |display_output_surface| created above. | 544 // The Display owns and uses the |display_output_surface| created above. |
| 545 data->display = base::MakeUnique<cc::Display>( | 545 data->display = base::MakeUnique<cc::Display>( |
| 546 HostSharedBitmapManager::current(), | 546 HostSharedBitmapManager::current(), |
| 547 BrowserGpuMemoryBufferManager::current(), | 547 GetGpuMemoryBufferManager(), |
| 548 compositor->GetRendererSettings(), std::move(begin_frame_source), | 548 compositor->GetRendererSettings(), std::move(begin_frame_source), |
| 549 std::move(display_output_surface), std::move(scheduler), | 549 std::move(display_output_surface), std::move(scheduler), |
| 550 base::MakeUnique<cc::TextureMailboxDeleter>( | 550 base::MakeUnique<cc::TextureMailboxDeleter>( |
| 551 compositor->task_runner().get())); | 551 compositor->task_runner().get())); |
| 552 | 552 |
| 553 // The |delegated_output_surface| is given back to the compositor, it | 553 // The |delegated_output_surface| is given back to the compositor, it |
| 554 // delegates to the Display as its root surface. Importantly, it shares the | 554 // delegates to the Display as its root surface. Importantly, it shares the |
| 555 // same ContextProvider as the Display's output surface. | 555 // same ContextProvider as the Display's output surface. |
| 556 std::unique_ptr<cc::SurfaceDisplayOutputSurface> delegated_output_surface( | 556 std::unique_ptr<cc::SurfaceDisplayOutputSurface> delegated_output_surface( |
| 557 vulkan_context_provider | 557 vulkan_context_provider |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 636 gfx::BufferUsage usage) { | 636 gfx::BufferUsage usage) { |
| 637 return BrowserGpuMemoryBufferManager::GetImageTextureTarget(format, usage); | 637 return BrowserGpuMemoryBufferManager::GetImageTextureTarget(format, usage); |
| 638 } | 638 } |
| 639 | 639 |
| 640 cc::SharedBitmapManager* GpuProcessTransportFactory::GetSharedBitmapManager() { | 640 cc::SharedBitmapManager* GpuProcessTransportFactory::GetSharedBitmapManager() { |
| 641 return HostSharedBitmapManager::current(); | 641 return HostSharedBitmapManager::current(); |
| 642 } | 642 } |
| 643 | 643 |
| 644 gpu::GpuMemoryBufferManager* | 644 gpu::GpuMemoryBufferManager* |
| 645 GpuProcessTransportFactory::GetGpuMemoryBufferManager() { | 645 GpuProcessTransportFactory::GetGpuMemoryBufferManager() { |
| 646 return BrowserGpuMemoryBufferManager::current(); | 646 return gpu_channel_factory_->GetGpuMemoryBufferManager(); |
| 647 } | 647 } |
| 648 | 648 |
| 649 cc::TaskGraphRunner* GpuProcessTransportFactory::GetTaskGraphRunner() { | 649 cc::TaskGraphRunner* GpuProcessTransportFactory::GetTaskGraphRunner() { |
| 650 return task_graph_runner_.get(); | 650 return task_graph_runner_.get(); |
| 651 } | 651 } |
| 652 | 652 |
| 653 ui::ContextFactory* GpuProcessTransportFactory::GetContextFactory() { | 653 ui::ContextFactory* GpuProcessTransportFactory::GetContextFactory() { |
| 654 return this; | 654 return this; |
| 655 } | 655 } |
| 656 | 656 |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 861 shared_vulkan_context_provider_ = | 861 shared_vulkan_context_provider_ = |
| 862 cc::VulkanInProcessContextProvider::Create(); | 862 cc::VulkanInProcessContextProvider::Create(); |
| 863 } | 863 } |
| 864 | 864 |
| 865 shared_vulkan_context_provider_initialized_ = true; | 865 shared_vulkan_context_provider_initialized_ = true; |
| 866 } | 866 } |
| 867 return shared_vulkan_context_provider_; | 867 return shared_vulkan_context_provider_; |
| 868 } | 868 } |
| 869 | 869 |
| 870 } // namespace content | 870 } // namespace content |
| OLD | NEW |