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

Side by Side Diff: cc/layers/surface_layer_impl.cc

Issue 2803913004: cc: Introduce embedded_surfaces in metadata for surface Ids in draw quads (Closed)
Patch Set: Addressed Dana's comments Created 3 years, 8 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
« no previous file with comments | « cc/layers/surface_layer_impl.h ('k') | cc/layers/surface_layer_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "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
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
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
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
OLDNEW
« no previous file with comments | « cc/layers/surface_layer_impl.h ('k') | cc/layers/surface_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698