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 "cc/surfaces/display.h" | 5 #include "cc/surfaces/display.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/thread_task_runner_handle.h" | 9 #include "base/thread_task_runner_handle.h" |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
11 #include "cc/debug/benchmark_instrumentation.h" | 11 #include "cc/debug/benchmark_instrumentation.h" |
12 #include "cc/output/compositor_frame.h" | 12 #include "cc/output/compositor_frame.h" |
13 #include "cc/output/compositor_frame_ack.h" | 13 #include "cc/output/compositor_frame_ack.h" |
14 #include "cc/output/direct_renderer.h" | 14 #include "cc/output/direct_renderer.h" |
15 #include "cc/output/gl_renderer.h" | 15 #include "cc/output/gl_renderer.h" |
16 #include "cc/output/renderer_settings.h" | 16 #include "cc/output/renderer_settings.h" |
17 #include "cc/output/software_renderer.h" | 17 #include "cc/output/software_renderer.h" |
18 #include "cc/output/texture_mailbox_deleter.h" | 18 #include "cc/output/texture_mailbox_deleter.h" |
19 #include "cc/surfaces/display_client.h" | 19 #include "cc/surfaces/display_client.h" |
20 #include "cc/surfaces/display_scheduler.h" | 20 #include "cc/surfaces/display_scheduler.h" |
21 #include "cc/surfaces/surface.h" | 21 #include "cc/surfaces/surface.h" |
22 #include "cc/surfaces/surface_aggregator.h" | 22 #include "cc/surfaces/surface_aggregator.h" |
23 #include "cc/surfaces/surface_manager.h" | 23 #include "cc/surfaces/surface_manager.h" |
24 #include "gpu/command_buffer/client/gles2_interface.h" | 24 #include "gpu/command_buffer/client/gles2_interface.h" |
25 #include "ui/gfx/buffer_types.h" | 25 #include "ui/gfx/buffer_types.h" |
26 | 26 |
| 27 #if defined(ENABLE_VULKAN) |
| 28 #include "cc/output/vulkan_renderer.h" |
| 29 #endif |
| 30 |
27 namespace { | 31 namespace { |
28 | 32 |
29 class EmptyBeginFrameSource : public cc::BeginFrameSource { | 33 class EmptyBeginFrameSource : public cc::BeginFrameSource { |
30 public: | 34 public: |
31 void DidFinishFrame(size_t remaining_frames) override{}; | 35 void DidFinishFrame(size_t remaining_frames) override{}; |
32 void AddObserver(cc::BeginFrameObserver* obs) override{}; | 36 void AddObserver(cc::BeginFrameObserver* obs) override{}; |
33 void RemoveObserver(cc::BeginFrameObserver* obs) override{}; | 37 void RemoveObserver(cc::BeginFrameObserver* obs) override{}; |
34 void AsValueInto(base::trace_event::TracedValue* dict) const override{}; | 38 void AsValueInto(base::trace_event::TracedValue* dict) const override{}; |
35 }; | 39 }; |
36 | 40 |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 if (!resource_provider) | 164 if (!resource_provider) |
161 return; | 165 return; |
162 | 166 |
163 if (output_surface_->context_provider()) { | 167 if (output_surface_->context_provider()) { |
164 std::unique_ptr<GLRenderer> renderer = GLRenderer::Create( | 168 std::unique_ptr<GLRenderer> renderer = GLRenderer::Create( |
165 this, &settings_, output_surface_.get(), resource_provider.get(), | 169 this, &settings_, output_surface_.get(), resource_provider.get(), |
166 texture_mailbox_deleter_.get(), settings_.highp_threshold_min); | 170 texture_mailbox_deleter_.get(), settings_.highp_threshold_min); |
167 if (!renderer) | 171 if (!renderer) |
168 return; | 172 return; |
169 renderer_ = std::move(renderer); | 173 renderer_ = std::move(renderer); |
| 174 } else if (output_surface_->vulkan_context_provider()) { |
| 175 #if defined(ENABLE_VULKAN) |
| 176 std::unique_ptr<VulkanRenderer> renderer = VulkanRenderer::Create( |
| 177 this, &settings_, output_surface_.get(), resource_provider.get(), |
| 178 texture_mailbox_deleter_.get(), settings_.highp_threshold_min); |
| 179 if (!renderer) |
| 180 return; |
| 181 renderer_ = std::move(renderer); |
| 182 #else |
| 183 NOTREACHED(); |
| 184 #endif |
170 } else { | 185 } else { |
171 std::unique_ptr<SoftwareRenderer> renderer = SoftwareRenderer::Create( | 186 std::unique_ptr<SoftwareRenderer> renderer = SoftwareRenderer::Create( |
172 this, &settings_, output_surface_.get(), resource_provider.get()); | 187 this, &settings_, output_surface_.get(), resource_provider.get()); |
173 if (!renderer) | 188 if (!renderer) |
174 return; | 189 return; |
175 renderer_ = std::move(renderer); | 190 renderer_ = std::move(renderer); |
176 } | 191 } |
177 | 192 |
178 resource_provider_ = std::move(resource_provider); | 193 resource_provider_ = std::move(resource_provider); |
179 // TODO(jbauman): Outputting an incomplete quad list doesn't work when using | 194 // TODO(jbauman): Outputting an incomplete quad list doesn't work when using |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 | 405 |
391 if (surface_id == current_surface_id_) | 406 if (surface_id == current_surface_id_) |
392 UpdateRootSurfaceResourcesLocked(); | 407 UpdateRootSurfaceResourcesLocked(); |
393 } | 408 } |
394 | 409 |
395 SurfaceId Display::CurrentSurfaceId() { | 410 SurfaceId Display::CurrentSurfaceId() { |
396 return current_surface_id_; | 411 return current_surface_id_; |
397 } | 412 } |
398 | 413 |
399 } // namespace cc | 414 } // namespace cc |
OLD | NEW |