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

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

Issue 1155553006: Revert of cc: Fix size_t to int truncations in layers/ output/ playback/ quads/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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
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/delegated_renderer_layer_impl.h" 5 #include "cc/layers/delegated_renderer_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 } 173 }
174 174
175 void DelegatedRendererLayerImpl::SetRenderPasses( 175 void DelegatedRendererLayerImpl::SetRenderPasses(
176 RenderPassList* render_passes_in_draw_order) { 176 RenderPassList* render_passes_in_draw_order) {
177 ClearRenderPasses(); 177 ClearRenderPasses();
178 178
179 for (size_t i = 0; i < render_passes_in_draw_order->size(); ++i) { 179 for (size_t i = 0; i < render_passes_in_draw_order->size(); ++i) {
180 RenderPassList::iterator to_take = 180 RenderPassList::iterator to_take =
181 render_passes_in_draw_order->begin() + i; 181 render_passes_in_draw_order->begin() + i;
182 render_passes_index_by_id_.insert( 182 render_passes_index_by_id_.insert(
183 RenderPassToIndexMap::value_type((*to_take)->id, i)); 183 std::pair<RenderPassId, int>((*to_take)->id, i));
184 scoped_ptr<RenderPass> taken_render_pass = 184 scoped_ptr<RenderPass> taken_render_pass =
185 render_passes_in_draw_order->take(to_take); 185 render_passes_in_draw_order->take(to_take);
186 render_passes_in_draw_order_.push_back(taken_render_pass.Pass()); 186 render_passes_in_draw_order_.push_back(taken_render_pass.Pass());
187 } 187 }
188 188
189 // Give back an empty array instead of nulls. 189 // Give back an empty array instead of nulls.
190 render_passes_in_draw_order->clear(); 190 render_passes_in_draw_order->clear();
191 191
192 // The render passes given here become part of the RenderSurfaceLayerList, so 192 // The render passes given here become part of the RenderSurfaceLayerList, so
193 // changing them requires recomputing the RenderSurfaceLayerList. 193 // changing them requires recomputing the RenderSurfaceLayerList.
194 layer_tree_impl()->set_needs_update_draw_properties(); 194 layer_tree_impl()->set_needs_update_draw_properties();
195 } 195 }
196 196
197 void DelegatedRendererLayerImpl::ClearRenderPasses() { 197 void DelegatedRendererLayerImpl::ClearRenderPasses() {
198 render_passes_index_by_id_.clear(); 198 render_passes_index_by_id_.clear();
199 render_passes_in_draw_order_.clear(); 199 render_passes_in_draw_order_.clear();
200 } 200 }
201 201
202 scoped_ptr<LayerImpl> DelegatedRendererLayerImpl::CreateLayerImpl( 202 scoped_ptr<LayerImpl> DelegatedRendererLayerImpl::CreateLayerImpl(
203 LayerTreeImpl* tree_impl) { 203 LayerTreeImpl* tree_impl) {
204 return DelegatedRendererLayerImpl::Create(tree_impl, id()); 204 return DelegatedRendererLayerImpl::Create(tree_impl, id());
205 } 205 }
206 206
207 void DelegatedRendererLayerImpl::ReleaseResources() { 207 void DelegatedRendererLayerImpl::ReleaseResources() {
208 ClearRenderPasses(); 208 ClearRenderPasses();
209 ClearChildId(); 209 ClearChildId();
210 have_render_passes_to_push_ = false; 210 have_render_passes_to_push_ = false;
211 } 211 }
212 212
213 static inline size_t IndexToId(size_t index) { 213 static inline int IndexToId(int index) { return index + 1; }
214 return index + 1; 214 static inline int IdToIndex(int id) { return id - 1; }
215 }
216 static inline size_t IdToIndex(size_t id) {
217 DCHECK_GT(id, 0u);
218 return id - 1;
219 }
220 215
221 RenderPassId DelegatedRendererLayerImpl::FirstContributingRenderPassId() const { 216 RenderPassId DelegatedRendererLayerImpl::FirstContributingRenderPassId() const {
222 return RenderPassId(id(), IndexToId(0)); 217 return RenderPassId(id(), IndexToId(0));
223 } 218 }
224 219
225 RenderPassId DelegatedRendererLayerImpl::NextContributingRenderPassId( 220 RenderPassId DelegatedRendererLayerImpl::NextContributingRenderPassId(
226 RenderPassId previous) const { 221 RenderPassId previous) const {
227 return RenderPassId(previous.layer_id, previous.index + 1); 222 return RenderPassId(previous.layer_id, previous.index + 1);
228 } 223 }
229 224
230 bool DelegatedRendererLayerImpl::ConvertDelegatedRenderPassId( 225 bool DelegatedRendererLayerImpl::ConvertDelegatedRenderPassId(
231 RenderPassId delegated_render_pass_id, 226 RenderPassId delegated_render_pass_id,
232 RenderPassId* output_render_pass_id) const { 227 RenderPassId* output_render_pass_id) const {
233 RenderPassToIndexMap::const_iterator found = 228 base::hash_map<RenderPassId, int>::const_iterator found =
234 render_passes_index_by_id_.find(delegated_render_pass_id); 229 render_passes_index_by_id_.find(delegated_render_pass_id);
235 if (found == render_passes_index_by_id_.end()) { 230 if (found == render_passes_index_by_id_.end()) {
236 // Be robust against a RenderPass id that isn't part of the frame. 231 // Be robust against a RenderPass id that isn't part of the frame.
237 return false; 232 return false;
238 } 233 }
239 size_t delegated_render_pass_index = found->second; 234 unsigned delegated_render_pass_index = found->second;
240 *output_render_pass_id = 235 *output_render_pass_id =
241 RenderPassId(id(), IndexToId(delegated_render_pass_index)); 236 RenderPassId(id(), IndexToId(delegated_render_pass_index));
242 return true; 237 return true;
243 } 238 }
244 239
245 void DelegatedRendererLayerImpl::AppendContributingRenderPasses( 240 void DelegatedRendererLayerImpl::AppendContributingRenderPasses(
246 RenderPassSink* render_pass_sink) { 241 RenderPassSink* render_pass_sink) {
247 DCHECK(HasContributingDelegatedRenderPasses()); 242 DCHECK(HasContributingDelegatedRenderPasses());
248 243
249 const RenderPass* root_delegated_render_pass = 244 const RenderPass* root_delegated_render_pass =
250 render_passes_in_draw_order_.back(); 245 render_passes_in_draw_order_.back();
251 gfx::Size frame_size = root_delegated_render_pass->output_rect.size(); 246 gfx::Size frame_size = root_delegated_render_pass->output_rect.size();
252 gfx::Transform delegated_frame_to_root_transform = screen_space_transform(); 247 gfx::Transform delegated_frame_to_root_transform = screen_space_transform();
253 delegated_frame_to_root_transform.Scale(inverse_device_scale_factor_, 248 delegated_frame_to_root_transform.Scale(inverse_device_scale_factor_,
254 inverse_device_scale_factor_); 249 inverse_device_scale_factor_);
255 250
256 for (size_t i = 0; i < render_passes_in_draw_order_.size() - 1; ++i) { 251 for (size_t i = 0; i < render_passes_in_draw_order_.size() - 1; ++i) {
257 RenderPassId output_render_pass_id; 252 RenderPassId output_render_pass_id(-1, -1);
258 bool present = 253 bool present =
259 ConvertDelegatedRenderPassId(render_passes_in_draw_order_[i]->id, 254 ConvertDelegatedRenderPassId(render_passes_in_draw_order_[i]->id,
260 &output_render_pass_id); 255 &output_render_pass_id);
261 256
262 // Don't clash with the RenderPass we generate if we own a RenderSurface. 257 // Don't clash with the RenderPass we generate if we own a RenderSurface.
263 DCHECK(present) << render_passes_in_draw_order_[i]->id.layer_id << ", " 258 DCHECK(present) << render_passes_in_draw_order_[i]->id.layer_id << ", "
264 << render_passes_in_draw_order_[i]->id.index; 259 << render_passes_in_draw_order_[i]->id.index;
265 DCHECK_GT(output_render_pass_id.index, 0u); 260 DCHECK_GT(output_render_pass_id.index, 0);
266 261
267 scoped_ptr<RenderPass> copy_pass = 262 scoped_ptr<RenderPass> copy_pass =
268 render_passes_in_draw_order_[i]->Copy(output_render_pass_id); 263 render_passes_in_draw_order_[i]->Copy(output_render_pass_id);
269 copy_pass->transform_to_root_target.ConcatTransform( 264 copy_pass->transform_to_root_target.ConcatTransform(
270 delegated_frame_to_root_transform); 265 delegated_frame_to_root_transform);
271 render_pass_sink->AppendRenderPass(copy_pass.Pass()); 266 render_pass_sink->AppendRenderPass(copy_pass.Pass());
272 } 267 }
273 } 268 }
274 269
275 bool DelegatedRendererLayerImpl::WillDraw(DrawMode draw_mode, 270 bool DelegatedRendererLayerImpl::WillDraw(DrawMode draw_mode,
(...skipping 30 matching lines...) Expand all
306 // render_target. 301 // render_target.
307 DCHECK(target_render_pass_id.layer_id == render_target()->id()); 302 DCHECK(target_render_pass_id.layer_id == render_target()->id());
308 303
309 AppendRenderPassQuads(render_pass, 304 AppendRenderPassQuads(render_pass,
310 root_delegated_render_pass, 305 root_delegated_render_pass,
311 frame_size); 306 frame_size);
312 } else { 307 } else {
313 // Verify that the RenderPass we are appending to was created by us. 308 // Verify that the RenderPass we are appending to was created by us.
314 DCHECK(target_render_pass_id.layer_id == id()); 309 DCHECK(target_render_pass_id.layer_id == id());
315 310
316 size_t render_pass_index = IdToIndex(target_render_pass_id.index); 311 int render_pass_index = IdToIndex(target_render_pass_id.index);
317 const RenderPass* delegated_render_pass = 312 const RenderPass* delegated_render_pass =
318 render_passes_in_draw_order_[render_pass_index]; 313 render_passes_in_draw_order_[render_pass_index];
319 AppendRenderPassQuads(render_pass, 314 AppendRenderPassQuads(render_pass,
320 delegated_render_pass, 315 delegated_render_pass,
321 frame_size); 316 frame_size);
322 } 317 }
323 } 318 }
324 319
325 void DelegatedRendererLayerImpl::AppendRainbowDebugBorder( 320 void DelegatedRendererLayerImpl::AppendRainbowDebugBorder(
326 RenderPass* render_pass) { 321 RenderPass* render_pass) {
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 continue; 479 continue;
485 480
486 if (delegated_quad->material != DrawQuad::RENDER_PASS) { 481 if (delegated_quad->material != DrawQuad::RENDER_PASS) {
487 DrawQuad* output_quad = render_pass->CopyFromAndAppendDrawQuad( 482 DrawQuad* output_quad = render_pass->CopyFromAndAppendDrawQuad(
488 delegated_quad, output_shared_quad_state); 483 delegated_quad, output_shared_quad_state);
489 output_quad->visible_rect = quad_visible_rect; 484 output_quad->visible_rect = quad_visible_rect;
490 ValidateQuadResources(output_quad); 485 ValidateQuadResources(output_quad);
491 } else { 486 } else {
492 RenderPassId delegated_contributing_render_pass_id = 487 RenderPassId delegated_contributing_render_pass_id =
493 RenderPassDrawQuad::MaterialCast(delegated_quad)->render_pass_id; 488 RenderPassDrawQuad::MaterialCast(delegated_quad)->render_pass_id;
494 RenderPassId output_contributing_render_pass_id; 489 RenderPassId output_contributing_render_pass_id(-1, -1);
495 490
496 bool present = 491 bool present =
497 ConvertDelegatedRenderPassId(delegated_contributing_render_pass_id, 492 ConvertDelegatedRenderPassId(delegated_contributing_render_pass_id,
498 &output_contributing_render_pass_id); 493 &output_contributing_render_pass_id);
499 // |present| being false means the child compositor sent an invalid frame. 494 // |present| being false means the child compositor sent an invalid frame.
500 DCHECK(present); 495 DCHECK(present);
501 DCHECK(output_contributing_render_pass_id != render_pass->id); 496 DCHECK(output_contributing_render_pass_id != render_pass->id);
502 497
503 RenderPassDrawQuad* output_quad = 498 RenderPassDrawQuad* output_quad =
504 render_pass->CopyFromAndAppendRenderPassDrawQuad( 499 render_pass->CopyFromAndAppendRenderPassDrawQuad(
(...skipping 16 matching lines...) Expand all
521 if (own_child_id_) { 516 if (own_child_id_) {
522 ResourceProvider* provider = layer_tree_impl()->resource_provider(); 517 ResourceProvider* provider = layer_tree_impl()->resource_provider();
523 provider->DestroyChild(child_id_); 518 provider->DestroyChild(child_id_);
524 } 519 }
525 520
526 resources_.clear(); 521 resources_.clear();
527 child_id_ = 0; 522 child_id_ = 0;
528 } 523 }
529 524
530 } // namespace cc 525 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/delegated_renderer_layer_impl.h ('k') | cc/layers/delegated_renderer_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698