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

Side by Side Diff: ui/compositor/test/in_process_context_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 "ui/compositor/test/in_process_context_factory.h" 5 #include "ui/compositor/test/in_process_context_factory.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
13 #include "base/threading/thread.h" 13 #include "base/threading/thread.h"
14 #include "cc/base/switches.h"
14 #include "cc/output/context_provider.h" 15 #include "cc/output/context_provider.h"
15 #include "cc/output/output_surface_client.h" 16 #include "cc/output/output_surface_client.h"
16 #include "cc/output/output_surface_frame.h" 17 #include "cc/output/output_surface_frame.h"
17 #include "cc/output/texture_mailbox_deleter.h" 18 #include "cc/output/texture_mailbox_deleter.h"
18 #include "cc/scheduler/begin_frame_source.h" 19 #include "cc/scheduler/begin_frame_source.h"
19 #include "cc/scheduler/delay_based_time_source.h" 20 #include "cc/scheduler/delay_based_time_source.h"
20 #include "cc/surfaces/direct_compositor_frame_sink.h" 21 #include "cc/surfaces/direct_compositor_frame_sink.h"
21 #include "cc/surfaces/display.h" 22 #include "cc/surfaces/display.h"
22 #include "cc/surfaces/display_scheduler.h" 23 #include "cc/surfaces/display_scheduler.h"
23 #include "cc/surfaces/local_surface_id_allocator.h" 24 #include "cc/surfaces/local_surface_id_allocator.h"
24 #include "cc/test/pixel_test_output_surface.h" 25 #include "cc/test/pixel_test_output_surface.h"
25 #include "gpu/command_buffer/client/context_support.h" 26 #include "gpu/command_buffer/client/context_support.h"
26 #include "gpu/command_buffer/client/gles2_interface.h" 27 #include "gpu/command_buffer/client/gles2_interface.h"
27 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 28 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
28 #include "ui/compositor/compositor_switches.h" 29 #include "ui/compositor/compositor_switches.h"
29 #include "ui/compositor/layer.h" 30 #include "ui/compositor/layer.h"
30 #include "ui/compositor/reflector.h" 31 #include "ui/compositor/reflector.h"
31 #include "ui/compositor/test/in_process_context_provider.h" 32 #include "ui/compositor/test/in_process_context_provider.h"
33 #include "ui/display/display_switches.h"
34 #include "ui/gfx/switches.h"
32 #include "ui/gl/gl_implementation.h" 35 #include "ui/gl/gl_implementation.h"
33 #include "ui/gl/test/gl_surface_test_support.h" 36 #include "ui/gl/test/gl_surface_test_support.h"
34 37
35 #if !defined(GPU_SURFACE_HANDLE_IS_ACCELERATED_WINDOW) 38 #if !defined(GPU_SURFACE_HANDLE_IS_ACCELERATED_WINDOW)
36 #include "gpu/ipc/common/gpu_surface_tracker.h" 39 #include "gpu/ipc/common/gpu_surface_tracker.h"
37 #endif 40 #endif
38 41
39 namespace ui { 42 namespace ui {
40 namespace { 43 namespace {
41 // The client_id used here should not conflict with the client_id generated 44 // The client_id used here should not conflict with the client_id generated
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 135
133 InProcessContextFactory::InProcessContextFactory( 136 InProcessContextFactory::InProcessContextFactory(
134 cc::SurfaceManager* surface_manager) 137 cc::SurfaceManager* surface_manager)
135 : frame_sink_id_allocator_(kDefaultClientId), 138 : frame_sink_id_allocator_(kDefaultClientId),
136 use_test_surface_(true), 139 use_test_surface_(true),
137 surface_manager_(surface_manager) { 140 surface_manager_(surface_manager) {
138 DCHECK(surface_manager); 141 DCHECK(surface_manager);
139 DCHECK_NE(gl::GetGLImplementation(), gl::kGLImplementationNone) 142 DCHECK_NE(gl::GetGLImplementation(), gl::kGLImplementationNone)
140 << "If running tests, ensure that main() is calling " 143 << "If running tests, ensure that main() is calling "
141 << "gl::GLSurfaceTestSupport::InitializeOneOff()"; 144 << "gl::GLSurfaceTestSupport::InitializeOneOff()";
145
146 renderer_settings_.partial_swap_enabled = false;
danakj 2017/05/11 20:10:17 same here?
Alex Z. 2017/05/12 14:12:36 Done.
147 #if defined(OS_WIN)
148 renderer_settings_.finish_rendering_on_resize = true;
149 #elif defined(OS_MACOSX)
150 renderer_settings_.release_overlay_resources_after_gpu_query = true;
151 #endif
152 renderer_settings_.gl_composited_texture_quad_border = false;
153 renderer_settings_.show_overdraw_feedback = false;
154 renderer_settings_.enable_color_correct_rendering = false;
155 // Populate buffer_to_texture_target_map for all buffer usage/formats.
156 for (int usage_idx = 0; usage_idx <= static_cast<int>(gfx::BufferUsage::LAST);
157 ++usage_idx) {
158 gfx::BufferUsage usage = static_cast<gfx::BufferUsage>(usage_idx);
159 for (int format_idx = 0;
160 format_idx <= static_cast<int>(gfx::BufferFormat::LAST);
161 ++format_idx) {
162 gfx::BufferFormat format = static_cast<gfx::BufferFormat>(format_idx);
163 renderer_settings_
164 .buffer_to_texture_target_map[std::make_pair(usage, format)] =
165 GL_TEXTURE_2D;
166 }
167 }
168 renderer_settings_.disallow_non_exact_resource_reuse = false;
142 } 169 }
143 170
144 InProcessContextFactory::~InProcessContextFactory() { 171 InProcessContextFactory::~InProcessContextFactory() {
145 DCHECK(per_compositor_data_.empty()); 172 DCHECK(per_compositor_data_.empty());
146 } 173 }
147 174
148 void InProcessContextFactory::SendOnLostResources() { 175 void InProcessContextFactory::SendOnLostResources() {
149 for (auto& observer : observer_list_) 176 for (auto& observer : observer_list_)
150 observer.OnLostResources(); 177 observer.OnLostResources();
151 } 178 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 234
208 std::unique_ptr<cc::DelayBasedBeginFrameSource> begin_frame_source( 235 std::unique_ptr<cc::DelayBasedBeginFrameSource> begin_frame_source(
209 new cc::DelayBasedBeginFrameSource( 236 new cc::DelayBasedBeginFrameSource(
210 base::MakeUnique<cc::DelayBasedTimeSource>( 237 base::MakeUnique<cc::DelayBasedTimeSource>(
211 compositor->task_runner().get()))); 238 compositor->task_runner().get())));
212 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler( 239 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler(
213 compositor->task_runner().get(), 240 compositor->task_runner().get(),
214 display_output_surface->capabilities().max_frames_pending)); 241 display_output_surface->capabilities().max_frames_pending));
215 242
216 data->display = base::MakeUnique<cc::Display>( 243 data->display = base::MakeUnique<cc::Display>(
217 &shared_bitmap_manager_, &gpu_memory_buffer_manager_, 244 &shared_bitmap_manager_, &gpu_memory_buffer_manager_, renderer_settings_,
218 compositor->GetRendererSettings(), compositor->frame_sink_id(), 245 compositor->frame_sink_id(), begin_frame_source.get(),
219 begin_frame_source.get(), std::move(display_output_surface), 246 std::move(display_output_surface), std::move(scheduler),
220 std::move(scheduler), base::MakeUnique<cc::TextureMailboxDeleter>( 247 base::MakeUnique<cc::TextureMailboxDeleter>(
221 compositor->task_runner().get())); 248 compositor->task_runner().get()));
222 // Note that we are careful not to destroy a prior |data->begin_frame_source| 249 // Note that we are careful not to destroy a prior |data->begin_frame_source|
223 // until we have reset |data->display|. 250 // until we have reset |data->display|.
224 data->begin_frame_source = std::move(begin_frame_source); 251 data->begin_frame_source = std::move(begin_frame_source);
225 252
226 auto* display = per_compositor_data_[compositor.get()]->display.get(); 253 auto* display = per_compositor_data_[compositor.get()]->display.get();
227 auto compositor_frame_sink = base::MakeUnique<cc::DirectCompositorFrameSink>( 254 auto compositor_frame_sink = base::MakeUnique<cc::DirectCompositorFrameSink>(
228 compositor->frame_sink_id(), surface_manager_, display, context_provider, 255 compositor->frame_sink_id(), surface_manager_, display, context_provider,
229 shared_worker_context_provider_, &gpu_memory_buffer_manager_, 256 shared_worker_context_provider_, &gpu_memory_buffer_manager_,
230 &shared_bitmap_manager_); 257 &shared_bitmap_manager_);
231 compositor->SetCompositorFrameSink(std::move(compositor_frame_sink)); 258 compositor->SetCompositorFrameSink(std::move(compositor_frame_sink));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 if (data->surface_handle) 295 if (data->surface_handle)
269 gpu::GpuSurfaceTracker::Get()->RemoveSurface(data->surface_handle); 296 gpu::GpuSurfaceTracker::Get()->RemoveSurface(data->surface_handle);
270 #endif 297 #endif
271 per_compositor_data_.erase(it); 298 per_compositor_data_.erase(it);
272 } 299 }
273 300
274 double InProcessContextFactory::GetRefreshRate() const { 301 double InProcessContextFactory::GetRefreshRate() const {
275 return refresh_rate_; 302 return refresh_rate_;
276 } 303 }
277 304
278 uint32_t InProcessContextFactory::GetImageTextureTarget(
279 gfx::BufferFormat format,
280 gfx::BufferUsage usage) {
281 return GL_TEXTURE_2D;
282 }
283
284 gpu::GpuMemoryBufferManager* 305 gpu::GpuMemoryBufferManager*
285 InProcessContextFactory::GetGpuMemoryBufferManager() { 306 InProcessContextFactory::GetGpuMemoryBufferManager() {
286 return &gpu_memory_buffer_manager_; 307 return &gpu_memory_buffer_manager_;
287 } 308 }
288 309
289 cc::TaskGraphRunner* InProcessContextFactory::GetTaskGraphRunner() { 310 cc::TaskGraphRunner* InProcessContextFactory::GetTaskGraphRunner() {
290 return &task_graph_runner_; 311 return &task_graph_runner_;
291 } 312 }
292 313
293 cc::FrameSinkId InProcessContextFactory::AllocateFrameSinkId() { 314 cc::FrameSinkId InProcessContextFactory::AllocateFrameSinkId() {
(...skipping 11 matching lines...) Expand all
305 per_compositor_data_[compositor]->display->SetVisible(visible); 326 per_compositor_data_[compositor]->display->SetVisible(visible);
306 } 327 }
307 328
308 void InProcessContextFactory::ResizeDisplay(ui::Compositor* compositor, 329 void InProcessContextFactory::ResizeDisplay(ui::Compositor* compositor,
309 const gfx::Size& size) { 330 const gfx::Size& size) {
310 if (!per_compositor_data_.count(compositor)) 331 if (!per_compositor_data_.count(compositor))
311 return; 332 return;
312 per_compositor_data_[compositor]->display->Resize(size); 333 per_compositor_data_[compositor]->display->Resize(size);
313 } 334 }
314 335
336 const cc::RendererSettings& InProcessContextFactory::GetRendererSettings()
337 const {
338 return renderer_settings_;
339 }
340
315 void InProcessContextFactory::AddObserver(ContextFactoryObserver* observer) { 341 void InProcessContextFactory::AddObserver(ContextFactoryObserver* observer) {
316 observer_list_.AddObserver(observer); 342 observer_list_.AddObserver(observer);
317 } 343 }
318 344
319 void InProcessContextFactory::RemoveObserver(ContextFactoryObserver* observer) { 345 void InProcessContextFactory::RemoveObserver(ContextFactoryObserver* observer) {
320 observer_list_.RemoveObserver(observer); 346 observer_list_.RemoveObserver(observer);
321 } 347 }
322 348
323 InProcessContextFactory::PerCompositorData* 349 InProcessContextFactory::PerCompositorData*
324 InProcessContextFactory::CreatePerCompositorData(ui::Compositor* compositor) { 350 InProcessContextFactory::CreatePerCompositorData(ui::Compositor* compositor) {
(...skipping 23 matching lines...) Expand all
348 )); 374 ));
349 #endif 375 #endif
350 } 376 }
351 377
352 PerCompositorData* return_ptr = data.get(); 378 PerCompositorData* return_ptr = data.get();
353 per_compositor_data_[compositor] = std::move(data); 379 per_compositor_data_[compositor] = std::move(data);
354 return return_ptr; 380 return return_ptr;
355 } 381 }
356 382
357 } // namespace ui 383 } // namespace ui
OLDNEW
« ui/compositor/test/fake_context_factory.cc ('K') | « ui/compositor/test/in_process_context_factory.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698