| 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 "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/output/compositor_frame.h" | 14 #include "cc/output/compositor_frame.h" |
| 15 #include "cc/output/context_provider.h" | 15 #include "cc/output/context_provider.h" |
| 16 #include "cc/output/output_surface_client.h" | 16 #include "cc/output/output_surface_client.h" |
| 17 #include "cc/surfaces/onscreen_display_client.h" | |
| 18 #include "cc/surfaces/surface_display_output_surface.h" | 17 #include "cc/surfaces/surface_display_output_surface.h" |
| 19 #include "cc/surfaces/surface_id_allocator.h" | 18 #include "cc/surfaces/surface_id_allocator.h" |
| 20 #include "cc/test/pixel_test_output_surface.h" | 19 #include "cc/test/pixel_test_output_surface.h" |
| 21 #include "cc/test/test_shared_bitmap_manager.h" | 20 #include "cc/test/test_shared_bitmap_manager.h" |
| 22 #include "gpu/command_buffer/client/context_support.h" | 21 #include "gpu/command_buffer/client/context_support.h" |
| 23 #include "gpu/command_buffer/client/gles2_interface.h" | 22 #include "gpu/command_buffer/client/gles2_interface.h" |
| 24 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 23 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
| 25 #include "ui/compositor/compositor_switches.h" | 24 #include "ui/compositor/compositor_switches.h" |
| 26 #include "ui/compositor/layer.h" | 25 #include "ui/compositor/layer.h" |
| 27 #include "ui/compositor/reflector.h" | 26 #include "ui/compositor/reflector.h" |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 attribs.samples = 0; | 141 attribs.samples = 0; |
| 143 attribs.sample_buffers = 0; | 142 attribs.sample_buffers = 0; |
| 144 attribs.fail_if_major_perf_caveat = false; | 143 attribs.fail_if_major_perf_caveat = false; |
| 145 attribs.bind_generates_resource = false; | 144 attribs.bind_generates_resource = false; |
| 146 scoped_refptr<InProcessContextProvider> context_provider = | 145 scoped_refptr<InProcessContextProvider> context_provider = |
| 147 InProcessContextProvider::Create( | 146 InProcessContextProvider::Create( |
| 148 attribs, shared_worker_context_provider_.get(), | 147 attribs, shared_worker_context_provider_.get(), |
| 149 &gpu_memory_buffer_manager_, &image_factory_, compositor->widget(), | 148 &gpu_memory_buffer_manager_, &image_factory_, compositor->widget(), |
| 150 "UICompositor"); | 149 "UICompositor"); |
| 151 | 150 |
| 152 std::unique_ptr<cc::OutputSurface> real_output_surface; | 151 std::unique_ptr<cc::OutputSurface> display_output_surface; |
| 153 std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source( | 152 std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source( |
| 154 new cc::SyntheticBeginFrameSource(compositor->task_runner().get(), | 153 new cc::SyntheticBeginFrameSource(compositor->task_runner().get(), |
| 155 cc::BeginFrameArgs::DefaultInterval())); | 154 cc::BeginFrameArgs::DefaultInterval())); |
| 156 | 155 |
| 157 if (use_test_surface_) { | 156 if (use_test_surface_) { |
| 158 bool flipped_output_surface = false; | 157 bool flipped_output_surface = false; |
| 159 real_output_surface = base::WrapUnique(new cc::PixelTestOutputSurface( | 158 display_output_surface = base::WrapUnique(new cc::PixelTestOutputSurface( |
| 160 context_provider, shared_worker_context_provider_, | 159 context_provider, shared_worker_context_provider_, |
| 161 flipped_output_surface, std::move(begin_frame_source))); | 160 flipped_output_surface, std::move(begin_frame_source))); |
| 162 } else { | 161 } else { |
| 163 real_output_surface = base::WrapUnique(new DirectOutputSurface( | 162 display_output_surface = base::WrapUnique(new DirectOutputSurface( |
| 164 context_provider, shared_worker_context_provider_, | 163 context_provider, shared_worker_context_provider_, |
| 165 std::move(begin_frame_source))); | 164 std::move(begin_frame_source))); |
| 166 } | 165 } |
| 167 | 166 |
| 168 if (surface_manager_) { | 167 if (surface_manager_) { |
| 169 std::unique_ptr<cc::OnscreenDisplayClient> display_client( | 168 std::unique_ptr<cc::Display> display(new cc::Display( |
| 170 new cc::OnscreenDisplayClient( | 169 surface_manager_, GetSharedBitmapManager(), GetGpuMemoryBufferManager(), |
| 171 std::move(real_output_surface), surface_manager_, | 170 compositor->GetRendererSettings(), |
| 172 GetSharedBitmapManager(), GetGpuMemoryBufferManager(), | 171 compositor->surface_id_allocator()->id_namespace(), |
| 173 compositor->GetRendererSettings(), compositor->task_runner(), | 172 compositor->task_runner().get(), std::move(display_output_surface))); |
| 174 compositor->surface_id_allocator()->id_namespace())); | |
| 175 std::unique_ptr<cc::SurfaceDisplayOutputSurface> surface_output_surface( | 173 std::unique_ptr<cc::SurfaceDisplayOutputSurface> surface_output_surface( |
| 176 new cc::SurfaceDisplayOutputSurface( | 174 new cc::SurfaceDisplayOutputSurface( |
| 177 surface_manager_, compositor->surface_id_allocator(), | 175 surface_manager_, compositor->surface_id_allocator(), display.get(), |
| 178 context_provider, shared_worker_context_provider_)); | 176 context_provider, shared_worker_context_provider_)); |
| 179 display_client->set_surface_output_surface(surface_output_surface.get()); | |
| 180 surface_output_surface->set_display_client(display_client.get()); | |
| 181 | 177 |
| 182 compositor->SetOutputSurface(std::move(surface_output_surface)); | 178 compositor->SetOutputSurface(std::move(surface_output_surface)); |
| 183 | 179 |
| 184 delete per_compositor_data_[compositor.get()]; | 180 per_compositor_data_[compositor.get()] = std::move(display); |
| 185 per_compositor_data_[compositor.get()] = display_client.release(); | |
| 186 } else { | 181 } else { |
| 187 compositor->SetOutputSurface(std::move(real_output_surface)); | 182 compositor->SetOutputSurface(std::move(display_output_surface)); |
| 188 } | 183 } |
| 189 } | 184 } |
| 190 | 185 |
| 191 std::unique_ptr<Reflector> InProcessContextFactory::CreateReflector( | 186 std::unique_ptr<Reflector> InProcessContextFactory::CreateReflector( |
| 192 Compositor* mirrored_compositor, | 187 Compositor* mirrored_compositor, |
| 193 Layer* mirroring_layer) { | 188 Layer* mirroring_layer) { |
| 194 return base::WrapUnique(new FakeReflector); | 189 return base::WrapUnique(new FakeReflector); |
| 195 } | 190 } |
| 196 | 191 |
| 197 void InProcessContextFactory::RemoveReflector(Reflector* reflector) { | 192 void InProcessContextFactory::RemoveReflector(Reflector* reflector) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 209 if (shared_main_thread_contexts_.get() && | 204 if (shared_main_thread_contexts_.get() && |
| 210 !shared_main_thread_contexts_->BindToCurrentThread()) | 205 !shared_main_thread_contexts_->BindToCurrentThread()) |
| 211 shared_main_thread_contexts_ = NULL; | 206 shared_main_thread_contexts_ = NULL; |
| 212 | 207 |
| 213 return shared_main_thread_contexts_; | 208 return shared_main_thread_contexts_; |
| 214 } | 209 } |
| 215 | 210 |
| 216 void InProcessContextFactory::RemoveCompositor(Compositor* compositor) { | 211 void InProcessContextFactory::RemoveCompositor(Compositor* compositor) { |
| 217 if (!per_compositor_data_.count(compositor)) | 212 if (!per_compositor_data_.count(compositor)) |
| 218 return; | 213 return; |
| 219 delete per_compositor_data_[compositor]; | |
| 220 per_compositor_data_.erase(compositor); | 214 per_compositor_data_.erase(compositor); |
| 221 } | 215 } |
| 222 | 216 |
| 223 bool InProcessContextFactory::DoesCreateTestContexts() { | 217 bool InProcessContextFactory::DoesCreateTestContexts() { |
| 224 return context_factory_for_test_; | 218 return context_factory_for_test_; |
| 225 } | 219 } |
| 226 | 220 |
| 227 uint32_t InProcessContextFactory::GetImageTextureTarget( | 221 uint32_t InProcessContextFactory::GetImageTextureTarget( |
| 228 gfx::BufferFormat format, | 222 gfx::BufferFormat format, |
| 229 gfx::BufferUsage usage) { | 223 gfx::BufferUsage usage) { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 253 } | 247 } |
| 254 | 248 |
| 255 cc::SurfaceManager* InProcessContextFactory::GetSurfaceManager() { | 249 cc::SurfaceManager* InProcessContextFactory::GetSurfaceManager() { |
| 256 return surface_manager_; | 250 return surface_manager_; |
| 257 } | 251 } |
| 258 | 252 |
| 259 void InProcessContextFactory::ResizeDisplay(ui::Compositor* compositor, | 253 void InProcessContextFactory::ResizeDisplay(ui::Compositor* compositor, |
| 260 const gfx::Size& size) { | 254 const gfx::Size& size) { |
| 261 if (!per_compositor_data_.count(compositor)) | 255 if (!per_compositor_data_.count(compositor)) |
| 262 return; | 256 return; |
| 263 per_compositor_data_[compositor]->display()->Resize(size); | 257 per_compositor_data_[compositor]->Resize(size); |
| 264 } | 258 } |
| 265 | 259 |
| 266 } // namespace ui | 260 } // namespace ui |
| OLD | NEW |