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

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

Issue 2879463002: Initialize RendererSettings in ContextFactory (Closed)
Patch Set: Address comments Created 3 years, 7 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 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/location.h" 12 #include "base/location.h"
13 #include "base/memory/ptr_util.h" 13 #include "base/memory/ptr_util.h"
14 #include "base/metrics/histogram_macros.h" 14 #include "base/metrics/histogram_macros.h"
15 #include "base/profiler/scoped_tracker.h" 15 #include "base/profiler/scoped_tracker.h"
16 #include "base/single_thread_task_runner.h" 16 #include "base/single_thread_task_runner.h"
17 #include "base/threading/simple_thread.h" 17 #include "base/threading/simple_thread.h"
18 #include "base/threading/thread.h" 18 #include "base/threading/thread.h"
19 #include "base/threading/thread_task_runner_handle.h" 19 #include "base/threading/thread_task_runner_handle.h"
20 #include "build/build_config.h" 20 #include "build/build_config.h"
21 #include "cc/base/histograms.h" 21 #include "cc/base/histograms.h"
22 #include "cc/base/switches.h"
22 #include "cc/output/texture_mailbox_deleter.h" 23 #include "cc/output/texture_mailbox_deleter.h"
23 #include "cc/output/vulkan_in_process_context_provider.h" 24 #include "cc/output/vulkan_in_process_context_provider.h"
24 #include "cc/raster/single_thread_task_graph_runner.h" 25 #include "cc/raster/single_thread_task_graph_runner.h"
25 #include "cc/raster/task_graph_runner.h" 26 #include "cc/raster/task_graph_runner.h"
26 #include "cc/scheduler/begin_frame_source.h" 27 #include "cc/scheduler/begin_frame_source.h"
27 #include "cc/scheduler/delay_based_time_source.h" 28 #include "cc/scheduler/delay_based_time_source.h"
28 #include "cc/surfaces/direct_compositor_frame_sink.h" 29 #include "cc/surfaces/direct_compositor_frame_sink.h"
29 #include "cc/surfaces/display.h" 30 #include "cc/surfaces/display.h"
30 #include "cc/surfaces/display_scheduler.h" 31 #include "cc/surfaces/display_scheduler.h"
31 #include "cc/surfaces/surface_manager.h" 32 #include "cc/surfaces/surface_manager.h"
(...skipping 17 matching lines...) Expand all
49 #include "gpu/command_buffer/common/mailbox.h" 50 #include "gpu/command_buffer/common/mailbox.h"
50 #include "gpu/ipc/client/gpu_channel_host.h" 51 #include "gpu/ipc/client/gpu_channel_host.h"
51 #include "gpu/ipc/host/gpu_memory_buffer_support.h" 52 #include "gpu/ipc/host/gpu_memory_buffer_support.h"
52 #include "gpu/vulkan/features.h" 53 #include "gpu/vulkan/features.h"
53 #include "services/service_manager/runner/common/client_util.h" 54 #include "services/service_manager/runner/common/client_util.h"
54 #include "services/ui/public/cpp/gpu/context_provider_command_buffer.h" 55 #include "services/ui/public/cpp/gpu/context_provider_command_buffer.h"
55 #include "third_party/khronos/GLES2/gl2.h" 56 #include "third_party/khronos/GLES2/gl2.h"
56 #include "ui/compositor/compositor.h" 57 #include "ui/compositor/compositor.h"
57 #include "ui/compositor/compositor_constants.h" 58 #include "ui/compositor/compositor_constants.h"
58 #include "ui/compositor/compositor_switches.h" 59 #include "ui/compositor/compositor_switches.h"
60 #include "ui/compositor/compositor_util.h"
59 #include "ui/compositor/layer.h" 61 #include "ui/compositor/layer.h"
62 #include "ui/display/display_switches.h"
60 #include "ui/display/types/display_snapshot.h" 63 #include "ui/display/types/display_snapshot.h"
61 #include "ui/gfx/geometry/size.h" 64 #include "ui/gfx/geometry/size.h"
62 #include "ui/gfx/switches.h" 65 #include "ui/gfx/switches.h"
63 #include "ui/gl/gl_switches.h" 66 #include "ui/gl/gl_switches.h"
64 67
65 #if defined(USE_AURA) 68 #if defined(USE_AURA)
66 #include "content/public/common/service_manager_connection.h" 69 #include "content/public/common/service_manager_connection.h"
67 #include "ui/aura/window_tree_host.h" 70 #include "ui/aura/window_tree_host.h"
68 #endif 71 #endif
69 72
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 if (command_line->HasSwitch(switches::kDisableGpuVsync)) { 206 if (command_line->HasSwitch(switches::kDisableGpuVsync)) {
204 std::string display_vsync_string = 207 std::string display_vsync_string =
205 command_line->GetSwitchValueASCII(switches::kDisableGpuVsync); 208 command_line->GetSwitchValueASCII(switches::kDisableGpuVsync);
206 // See comments in gl_switches about this flag. The browser compositor 209 // See comments in gl_switches about this flag. The browser compositor
207 // is only unthrottled when "gpu" or no switch value is passed, as it 210 // is only unthrottled when "gpu" or no switch value is passed, as it
208 // is driven directly by the display compositor. 211 // is driven directly by the display compositor.
209 if (display_vsync_string != "beginframe") { 212 if (display_vsync_string != "beginframe") {
210 disable_display_vsync_ = true; 213 disable_display_vsync_ = true;
211 } 214 }
212 } 215 }
216 ui::InitializeRendererSettings(base::Bind(&gpu::GetImageTextureTarget),
danakj 2017/05/11 20:10:16 Bind/Callback feels a bit heavyweight for what we
Alex Z. 2017/05/12 14:12:36 Done.
217 &renderer_settings_);
213 218
214 task_graph_runner_->Start("CompositorTileWorker1", 219 task_graph_runner_->Start("CompositorTileWorker1",
215 base::SimpleThread::Options()); 220 base::SimpleThread::Options());
216 #if defined(OS_WIN) 221 #if defined(OS_WIN)
217 software_backing_.reset(new OutputDeviceBacking); 222 software_backing_.reset(new OutputDeviceBacking);
218 #endif 223 #endif
219 } 224 }
220 225
221 GpuProcessTransportFactory::~GpuProcessTransportFactory() { 226 GpuProcessTransportFactory::~GpuProcessTransportFactory() {
222 DCHECK(per_compositor_data_.empty()); 227 DCHECK(per_compositor_data_.empty());
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 compositor->widget()); 594 compositor->widget());
590 #endif 595 #endif
591 596
592 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler( 597 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler(
593 compositor->task_runner().get(), 598 compositor->task_runner().get(),
594 display_output_surface->capabilities().max_frames_pending)); 599 display_output_surface->capabilities().max_frames_pending));
595 600
596 // The Display owns and uses the |display_output_surface| created above. 601 // The Display owns and uses the |display_output_surface| created above.
597 data->display = base::MakeUnique<cc::Display>( 602 data->display = base::MakeUnique<cc::Display>(
598 display_compositor::HostSharedBitmapManager::current(), 603 display_compositor::HostSharedBitmapManager::current(),
599 GetGpuMemoryBufferManager(), compositor->GetRendererSettings(), 604 GetGpuMemoryBufferManager(), renderer_settings_,
600 compositor->frame_sink_id(), begin_frame_source, 605 compositor->frame_sink_id(), begin_frame_source,
601 std::move(display_output_surface), std::move(scheduler), 606 std::move(display_output_surface), std::move(scheduler),
602 base::MakeUnique<cc::TextureMailboxDeleter>( 607 base::MakeUnique<cc::TextureMailboxDeleter>(
603 compositor->task_runner().get())); 608 compositor->task_runner().get()));
604 // Note that we are careful not to destroy prior BeginFrameSource objects 609 // Note that we are careful not to destroy prior BeginFrameSource objects
605 // until we have reset |data->display|. 610 // until we have reset |data->display|.
606 data->synthetic_begin_frame_source = std::move(synthetic_begin_frame_source); 611 data->synthetic_begin_frame_source = std::move(synthetic_begin_frame_source);
607 data->gpu_vsync_begin_frame_source = std::move(gpu_vsync_begin_frame_source); 612 data->gpu_vsync_begin_frame_source = std::move(gpu_vsync_begin_frame_source);
608 613
609 // The |delegated_output_surface| is given back to the compositor, it 614 // The |delegated_output_surface| is given back to the compositor, it
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 #if defined(OS_WIN) 688 #if defined(OS_WIN)
684 gfx::RenderingWindowManager::GetInstance()->UnregisterParent( 689 gfx::RenderingWindowManager::GetInstance()->UnregisterParent(
685 compositor->widget()); 690 compositor->widget());
686 #endif 691 #endif
687 } 692 }
688 693
689 double GpuProcessTransportFactory::GetRefreshRate() const { 694 double GpuProcessTransportFactory::GetRefreshRate() const {
690 return 60.0; 695 return 60.0;
691 } 696 }
692 697
693 uint32_t GpuProcessTransportFactory::GetImageTextureTarget(
694 gfx::BufferFormat format,
695 gfx::BufferUsage usage) {
696 return gpu::GetImageTextureTarget(format, usage);
697 }
698
699 gpu::GpuMemoryBufferManager* 698 gpu::GpuMemoryBufferManager*
700 GpuProcessTransportFactory::GetGpuMemoryBufferManager() { 699 GpuProcessTransportFactory::GetGpuMemoryBufferManager() {
701 return gpu_channel_factory_->GetGpuMemoryBufferManager(); 700 return gpu_channel_factory_->GetGpuMemoryBufferManager();
702 } 701 }
703 702
704 cc::TaskGraphRunner* GpuProcessTransportFactory::GetTaskGraphRunner() { 703 cc::TaskGraphRunner* GpuProcessTransportFactory::GetTaskGraphRunner() {
705 return task_graph_runner_.get(); 704 return task_graph_runner_.get();
706 } 705 }
707 706
708 ui::ContextFactory* GpuProcessTransportFactory::GetContextFactory() { 707 ui::ContextFactory* GpuProcessTransportFactory::GetContextFactory() {
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 PerCompositorDataMap::iterator it = per_compositor_data_.find(compositor); 790 PerCompositorDataMap::iterator it = per_compositor_data_.find(compositor);
792 if (it == per_compositor_data_.end()) 791 if (it == per_compositor_data_.end())
793 return; 792 return;
794 PerCompositorData* data = it->second.get(); 793 PerCompositorData* data = it->second.get();
795 DCHECK(data); 794 DCHECK(data);
796 data->output_is_secure = secure; 795 data->output_is_secure = secure;
797 if (data->display) 796 if (data->display)
798 data->display->SetOutputIsSecure(secure); 797 data->display->SetOutputIsSecure(secure);
799 } 798 }
800 799
800 const cc::RendererSettings& GpuProcessTransportFactory::GetRendererSettings()
801 const {
802 return renderer_settings_;
803 }
804
801 void GpuProcessTransportFactory::AddObserver( 805 void GpuProcessTransportFactory::AddObserver(
802 ui::ContextFactoryObserver* observer) { 806 ui::ContextFactoryObserver* observer) {
803 observer_list_.AddObserver(observer); 807 observer_list_.AddObserver(observer);
804 } 808 }
805 809
806 void GpuProcessTransportFactory::RemoveObserver( 810 void GpuProcessTransportFactory::RemoveObserver(
807 ui::ContextFactoryObserver* observer) { 811 ui::ContextFactoryObserver* observer) {
808 observer_list_.RemoveObserver(observer); 812 observer_list_.RemoveObserver(observer);
809 } 813 }
810 814
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
945 shared_vulkan_context_provider_ = 949 shared_vulkan_context_provider_ =
946 cc::VulkanInProcessContextProvider::Create(); 950 cc::VulkanInProcessContextProvider::Create();
947 } 951 }
948 952
949 shared_vulkan_context_provider_initialized_ = true; 953 shared_vulkan_context_provider_initialized_ = true;
950 } 954 }
951 return shared_vulkan_context_provider_; 955 return shared_vulkan_context_provider_;
952 } 956 }
953 957
954 } // namespace content 958 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698