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

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

Issue 2166043002: cc: Compute target space transform dynamically (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resolve comments Created 4 years, 5 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/layer_impl.h ('k') | cc/proto/property_tree.proto » ('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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/layer_impl.h" 5 #include "cc/layers/layer_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 } 153 }
154 154
155 void LayerImpl::SetClipTreeIndex(int index) { 155 void LayerImpl::SetClipTreeIndex(int index) {
156 clip_tree_index_ = index; 156 clip_tree_index_ = index;
157 } 157 }
158 158
159 void LayerImpl::SetEffectTreeIndex(int index) { 159 void LayerImpl::SetEffectTreeIndex(int index) {
160 effect_tree_index_ = index; 160 effect_tree_index_ = index;
161 } 161 }
162 162
163 int LayerImpl::render_target_effect_tree_index() const {
164 EffectNode* effect_node =
165 layer_tree_impl_->property_trees()->effect_tree.Node(effect_tree_index_);
166 if (effect_node->has_render_surface)
167 return effect_node->id;
168 else
169 return effect_node->target_id;
170 }
171
163 void LayerImpl::SetScrollTreeIndex(int index) { 172 void LayerImpl::SetScrollTreeIndex(int index) {
164 scroll_tree_index_ = index; 173 scroll_tree_index_ = index;
165 } 174 }
166 175
167 void LayerImpl::ClearRenderSurfaceLayerList() { 176 void LayerImpl::ClearRenderSurfaceLayerList() {
168 if (render_surface_) 177 if (render_surface_)
169 render_surface_->ClearLayerLists(); 178 render_surface_->ClearLayerLists();
170 } 179 }
171 180
172 void LayerImpl::PopulateSharedQuadState(SharedQuadState* state) const { 181 void LayerImpl::PopulateSharedQuadState(SharedQuadState* state) const {
(...skipping 963 matching lines...) Expand 10 before | Expand all | Expand 10 after
1136 gfx::Rect LayerImpl::GetScaledEnclosingRectInTargetSpace(float scale) const { 1145 gfx::Rect LayerImpl::GetScaledEnclosingRectInTargetSpace(float scale) const {
1137 gfx::Transform scaled_draw_transform = DrawTransform(); 1146 gfx::Transform scaled_draw_transform = DrawTransform();
1138 scaled_draw_transform.Scale(SK_MScalar1 / scale, SK_MScalar1 / scale); 1147 scaled_draw_transform.Scale(SK_MScalar1 / scale, SK_MScalar1 / scale);
1139 gfx::Size scaled_bounds = gfx::ScaleToCeiledSize(bounds(), scale); 1148 gfx::Size scaled_bounds = gfx::ScaleToCeiledSize(bounds(), scale);
1140 return MathUtil::MapEnclosingClippedRect(scaled_draw_transform, 1149 return MathUtil::MapEnclosingClippedRect(scaled_draw_transform,
1141 gfx::Rect(scaled_bounds)); 1150 gfx::Rect(scaled_bounds));
1142 } 1151 }
1143 1152
1144 RenderSurfaceImpl* LayerImpl::render_target() { 1153 RenderSurfaceImpl* LayerImpl::render_target() {
1145 EffectTree& effect_tree = layer_tree_impl_->property_trees()->effect_tree; 1154 EffectTree& effect_tree = layer_tree_impl_->property_trees()->effect_tree;
1146 EffectNode* node = effect_tree.Node(effect_tree_index_); 1155 EffectNode* effect_node = effect_tree.Node(render_target_effect_tree_index());
1147 1156 if (effect_node->render_surface)
1148 if (node->render_surface) 1157 return effect_node->render_surface;
1149 return node->render_surface;
1150 else 1158 else
1151 return effect_tree.Node(node->target_id)->render_surface; 1159 return effect_tree.Node(effect_node->target_id)->render_surface;
1152 } 1160 }
1153 1161
1154 const RenderSurfaceImpl* LayerImpl::render_target() const { 1162 const RenderSurfaceImpl* LayerImpl::render_target() const {
1155 const EffectTree& effect_tree = 1163 const EffectTree& effect_tree =
1156 layer_tree_impl_->property_trees()->effect_tree; 1164 layer_tree_impl_->property_trees()->effect_tree;
1157 const EffectNode* node = effect_tree.Node(effect_tree_index_); 1165 const EffectNode* effect_node =
1158 1166 effect_tree.Node(render_target_effect_tree_index());
1159 if (node->render_surface) 1167 if (effect_node->render_surface)
1160 return node->render_surface; 1168 return effect_node->render_surface;
1161 else 1169 else
1162 return effect_tree.Node(node->target_id)->render_surface; 1170 return effect_tree.Node(effect_node->target_id)->render_surface;
jaydasika 2016/07/21 22:03:34 Is this change required ? If target_effect_tree_in
sunxd 2016/07/22 14:41:17 The render_target function is sometimes called bef
ajuma 2016/07/22 15:05:48 What's an example of such a callsite? One thing to
sunxd 2016/07/22 15:32:14 I think that's when we cannot render to separate s
1163 } 1171 }
1164 1172
1165 bool LayerImpl::IsHidden() const { 1173 bool LayerImpl::IsHidden() const {
1166 EffectTree& effect_tree = layer_tree_impl_->property_trees()->effect_tree; 1174 EffectTree& effect_tree = layer_tree_impl_->property_trees()->effect_tree;
1167 EffectNode* node = effect_tree.Node(effect_tree_index_); 1175 EffectNode* node = effect_tree.Node(effect_tree_index_);
1168 return node->screen_space_opacity == 0.f; 1176 return node->screen_space_opacity == 0.f;
1169 } 1177 }
1170 1178
1171 bool LayerImpl::InsideReplica() const { 1179 bool LayerImpl::InsideReplica() const {
1172 // There are very few render targets so this should be cheap to do for each 1180 // There are very few render targets so this should be cheap to do for each
(...skipping 22 matching lines...) Expand all
1195 .layer_transforms_should_scale_layer_contents) { 1203 .layer_transforms_should_scale_layer_contents) {
1196 return default_scale; 1204 return default_scale;
1197 } 1205 }
1198 1206
1199 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( 1207 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents(
1200 ScreenSpaceTransform(), default_scale); 1208 ScreenSpaceTransform(), default_scale);
1201 return std::max(transform_scales.x(), transform_scales.y()); 1209 return std::max(transform_scales.x(), transform_scales.y());
1202 } 1210 }
1203 1211
1204 } // namespace cc 1212 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/layer_impl.h ('k') | cc/proto/property_tree.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698