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

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: Revert ancestors_are_invertible change 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->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 return effect_tree.Node(render_target_effect_tree_index())->render_surface;
1147
1148 if (node->render_surface)
1149 return node->render_surface;
1150 else
1151 return effect_tree.Node(node->target_id)->render_surface;
1152 } 1156 }
1153 1157
1154 const RenderSurfaceImpl* LayerImpl::render_target() const { 1158 const RenderSurfaceImpl* LayerImpl::render_target() const {
1155 const EffectTree& effect_tree = 1159 const EffectTree& effect_tree =
1156 layer_tree_impl_->property_trees()->effect_tree; 1160 layer_tree_impl_->property_trees()->effect_tree;
1157 const EffectNode* node = effect_tree.Node(effect_tree_index_); 1161 return effect_tree.Node(render_target_effect_tree_index())->render_surface;
1158
1159 if (node->render_surface)
1160 return node->render_surface;
1161 else
1162 return effect_tree.Node(node->target_id)->render_surface;
1163 } 1162 }
1164 1163
1165 bool LayerImpl::IsHidden() const { 1164 bool LayerImpl::IsHidden() const {
1166 EffectTree& effect_tree = layer_tree_impl_->property_trees()->effect_tree; 1165 EffectTree& effect_tree = layer_tree_impl_->property_trees()->effect_tree;
1167 EffectNode* node = effect_tree.Node(effect_tree_index_); 1166 EffectNode* node = effect_tree.Node(effect_tree_index_);
1168 return node->screen_space_opacity == 0.f; 1167 return node->screen_space_opacity == 0.f;
1169 } 1168 }
1170 1169
1171 bool LayerImpl::InsideReplica() const { 1170 bool LayerImpl::InsideReplica() const {
1172 // There are very few render targets so this should be cheap to do for each 1171 // 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) { 1194 .layer_transforms_should_scale_layer_contents) {
1196 return default_scale; 1195 return default_scale;
1197 } 1196 }
1198 1197
1199 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( 1198 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents(
1200 ScreenSpaceTransform(), default_scale); 1199 ScreenSpaceTransform(), default_scale);
1201 return std::max(transform_scales.x(), transform_scales.y()); 1200 return std::max(transform_scales.x(), transform_scales.y());
1202 } 1201 }
1203 1202
1204 } // namespace cc 1203 } // 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