| 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/layers/surface_layer_impl.h" | 5 #include "cc/layers/surface_layer_impl.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include "base/trace_event/trace_event_argument.h" | 9 #include "base/trace_event/trace_event_argument.h" |
| 10 #include "cc/debug/debug_colors.h" | 10 #include "cc/debug/debug_colors.h" |
| 11 #include "cc/layers/append_quads_data.h" |
| 11 #include "cc/quads/solid_color_draw_quad.h" | 12 #include "cc/quads/solid_color_draw_quad.h" |
| 12 #include "cc/quads/surface_draw_quad.h" | 13 #include "cc/quads/surface_draw_quad.h" |
| 13 #include "cc/trees/layer_tree_impl.h" | 14 #include "cc/trees/layer_tree_impl.h" |
| 14 #include "cc/trees/occlusion.h" | 15 #include "cc/trees/occlusion.h" |
| 15 | 16 |
| 16 namespace cc { | 17 namespace cc { |
| 17 | 18 |
| 18 SurfaceLayerImpl::SurfaceLayerImpl(LayerTreeImpl* tree_impl, int id) | 19 SurfaceLayerImpl::SurfaceLayerImpl(LayerTreeImpl* tree_impl, int id) |
| 19 : LayerImpl(tree_impl, id) { | 20 : LayerImpl(tree_impl, id) { |
| 20 layer_tree_impl()->AddSurfaceLayer(this); | 21 layer_tree_impl()->AddSurfaceLayer(this); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 SurfaceLayerImpl* layer_impl = static_cast<SurfaceLayerImpl*>(layer); | 59 SurfaceLayerImpl* layer_impl = static_cast<SurfaceLayerImpl*>(layer); |
| 59 layer_impl->SetPrimarySurfaceInfo(primary_surface_info_); | 60 layer_impl->SetPrimarySurfaceInfo(primary_surface_info_); |
| 60 layer_impl->SetFallbackSurfaceInfo(fallback_surface_info_); | 61 layer_impl->SetFallbackSurfaceInfo(fallback_surface_info_); |
| 61 layer_impl->SetStretchContentToFillBounds(stretch_content_to_fill_bounds_); | 62 layer_impl->SetStretchContentToFillBounds(stretch_content_to_fill_bounds_); |
| 62 } | 63 } |
| 63 | 64 |
| 64 void SurfaceLayerImpl::AppendQuads(RenderPass* render_pass, | 65 void SurfaceLayerImpl::AppendQuads(RenderPass* render_pass, |
| 65 AppendQuadsData* append_quads_data) { | 66 AppendQuadsData* append_quads_data) { |
| 66 AppendRainbowDebugBorder(render_pass); | 67 AppendRainbowDebugBorder(render_pass); |
| 67 auto* primary = CreateSurfaceDrawQuad( | 68 auto* primary = CreateSurfaceDrawQuad( |
| 68 render_pass, SurfaceDrawQuadType::PRIMARY, primary_surface_info_); | 69 render_pass, SurfaceDrawQuadType::PRIMARY, primary_surface_info_, |
| 70 &append_quads_data->embedded_surfaces); |
| 69 // Emitting a fallback SurfaceDrawQuad is unnecessary if the primary and | 71 // Emitting a fallback SurfaceDrawQuad is unnecessary if the primary and |
| 70 // fallback surface Ids match. | 72 // fallback surface Ids match. |
| 71 if (primary && fallback_surface_info_.id() != primary_surface_info_.id()) { | 73 if (primary && fallback_surface_info_.id() != primary_surface_info_.id()) { |
| 72 primary->fallback_quad = CreateSurfaceDrawQuad( | 74 primary->fallback_quad = CreateSurfaceDrawQuad( |
| 73 render_pass, SurfaceDrawQuadType::FALLBACK, fallback_surface_info_); | 75 render_pass, SurfaceDrawQuadType::FALLBACK, fallback_surface_info_, |
| 76 &append_quads_data->embedded_surfaces); |
| 74 } | 77 } |
| 75 } | 78 } |
| 76 | 79 |
| 77 SurfaceDrawQuad* SurfaceLayerImpl::CreateSurfaceDrawQuad( | 80 SurfaceDrawQuad* SurfaceLayerImpl::CreateSurfaceDrawQuad( |
| 78 RenderPass* render_pass, | 81 RenderPass* render_pass, |
| 79 SurfaceDrawQuadType surface_draw_quad_type, | 82 SurfaceDrawQuadType surface_draw_quad_type, |
| 80 const SurfaceInfo& surface_info) { | 83 const SurfaceInfo& surface_info, |
| 84 std::vector<SurfaceId>* embedded_surfaces) { |
| 81 if (!surface_info.is_valid()) | 85 if (!surface_info.is_valid()) |
| 82 return nullptr; | 86 return nullptr; |
| 83 | 87 |
| 84 gfx::Rect quad_rect(surface_info.size_in_pixels()); | 88 gfx::Rect quad_rect(surface_info.size_in_pixels()); |
| 85 gfx::Rect visible_quad_rect = | 89 gfx::Rect visible_quad_rect = |
| 86 draw_properties().occlusion_in_content_space.GetUnoccludedContentRect( | 90 draw_properties().occlusion_in_content_space.GetUnoccludedContentRect( |
| 87 gfx::Rect(bounds())); | 91 gfx::Rect(bounds())); |
| 88 | 92 |
| 89 float layer_to_content_scale_x, layer_to_content_scale_y; | 93 float layer_to_content_scale_x, layer_to_content_scale_y; |
| 90 if (stretch_content_to_fill_bounds_) { | 94 if (stretch_content_to_fill_bounds_) { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 110 | 114 |
| 111 SharedQuadState* shared_quad_state = | 115 SharedQuadState* shared_quad_state = |
| 112 render_pass->CreateAndAppendSharedQuadState(); | 116 render_pass->CreateAndAppendSharedQuadState(); |
| 113 PopulateScaledSharedQuadState(shared_quad_state, layer_to_content_scale_x, | 117 PopulateScaledSharedQuadState(shared_quad_state, layer_to_content_scale_x, |
| 114 layer_to_content_scale_y); | 118 layer_to_content_scale_y); |
| 115 | 119 |
| 116 SurfaceDrawQuad* surface_draw_quad = | 120 SurfaceDrawQuad* surface_draw_quad = |
| 117 render_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); | 121 render_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); |
| 118 surface_draw_quad->SetNew(shared_quad_state, quad_rect, visible_quad_rect, | 122 surface_draw_quad->SetNew(shared_quad_state, quad_rect, visible_quad_rect, |
| 119 surface_info.id(), surface_draw_quad_type, nullptr); | 123 surface_info.id(), surface_draw_quad_type, nullptr); |
| 124 embedded_surfaces->push_back(surface_info.id()); |
| 125 |
| 120 return surface_draw_quad; | 126 return surface_draw_quad; |
| 121 } | 127 } |
| 122 | 128 |
| 123 void SurfaceLayerImpl::GetDebugBorderProperties(SkColor* color, | 129 void SurfaceLayerImpl::GetDebugBorderProperties(SkColor* color, |
| 124 float* width) const { | 130 float* width) const { |
| 125 *color = DebugColors::SurfaceLayerBorderColor(); | 131 *color = DebugColors::SurfaceLayerBorderColor(); |
| 126 *width = DebugColors::SurfaceLayerBorderWidth( | 132 *width = DebugColors::SurfaceLayerBorderWidth( |
| 127 layer_tree_impl() ? layer_tree_impl()->device_scale_factor() : 1); | 133 layer_tree_impl() ? layer_tree_impl()->device_scale_factor() : 1); |
| 128 } | 134 } |
| 129 | 135 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 dict->SetString("surface_id", primary_surface_info_.id().ToString()); | 225 dict->SetString("surface_id", primary_surface_info_.id().ToString()); |
| 220 dict->SetString("fallback_surface_id", | 226 dict->SetString("fallback_surface_id", |
| 221 fallback_surface_info_.id().ToString()); | 227 fallback_surface_info_.id().ToString()); |
| 222 } | 228 } |
| 223 | 229 |
| 224 const char* SurfaceLayerImpl::LayerTypeAsString() const { | 230 const char* SurfaceLayerImpl::LayerTypeAsString() const { |
| 225 return "cc::SurfaceLayerImpl"; | 231 return "cc::SurfaceLayerImpl"; |
| 226 } | 232 } |
| 227 | 233 |
| 228 } // namespace cc | 234 } // namespace cc |
| OLD | NEW |