OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "content/common/cc_messages.h" | 5 #include "content/common/cc_messages.h" |
6 | 6 |
7 #include "cc/output/compositor_frame.h" | 7 #include "cc/output/compositor_frame.h" |
8 #include "cc/output/filter_operations.h" | 8 #include "cc/output/filter_operations.h" |
9 #include "cc/quads/draw_quad.h" | 9 #include "cc/quads/draw_quad.h" |
10 #include "cc/quads/largest_draw_quad.h" | 10 #include "cc/quads/largest_draw_quad.h" |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 l->append(") "); | 293 l->append(") "); |
294 } | 294 } |
295 | 295 |
296 void ParamTraits<cc::RenderPass>::Write( | 296 void ParamTraits<cc::RenderPass>::Write( |
297 Message* m, const param_type& p) { | 297 Message* m, const param_type& p) { |
298 WriteParam(m, p.id); | 298 WriteParam(m, p.id); |
299 WriteParam(m, p.output_rect); | 299 WriteParam(m, p.output_rect); |
300 WriteParam(m, p.damage_rect); | 300 WriteParam(m, p.damage_rect); |
301 WriteParam(m, p.transform_to_root_target); | 301 WriteParam(m, p.transform_to_root_target); |
302 WriteParam(m, p.has_transparent_background); | 302 WriteParam(m, p.has_transparent_background); |
| 303 WriteParam(m, p.referenced_surfaces); |
303 WriteParam(m, p.quad_list.size()); | 304 WriteParam(m, p.quad_list.size()); |
304 | 305 |
305 cc::SharedQuadStateList::ConstIterator shared_quad_state_iter = | 306 cc::SharedQuadStateList::ConstIterator shared_quad_state_iter = |
306 p.shared_quad_state_list.begin(); | 307 p.shared_quad_state_list.begin(); |
307 cc::SharedQuadStateList::ConstIterator last_shared_quad_state_iter = | 308 cc::SharedQuadStateList::ConstIterator last_shared_quad_state_iter = |
308 p.shared_quad_state_list.end(); | 309 p.shared_quad_state_list.end(); |
309 for (const auto& quad : p.quad_list) { | 310 for (const auto& quad : p.quad_list) { |
310 DCHECK(quad->rect.Contains(quad->visible_rect)) | 311 DCHECK(quad->rect.Contains(quad->visible_rect)) |
311 << quad->material << " rect: " << quad->rect.ToString() | 312 << quad->material << " rect: " << quad->rect.ToString() |
312 << " visible_rect: " << quad->visible_rect.ToString(); | 313 << " visible_rect: " << quad->visible_rect.ToString(); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 | 377 |
377 // Whether the quad points to a new shared quad state for each quad. | 378 // Whether the quad points to a new shared quad state for each quad. |
378 to_reserve += p.quad_list.size() * sizeof(bool); | 379 to_reserve += p.quad_list.size() * sizeof(bool); |
379 | 380 |
380 // Shared quad state is only written when a quad contains a shared quad state | 381 // Shared quad state is only written when a quad contains a shared quad state |
381 // that has not been written. | 382 // that has not been written. |
382 to_reserve += p.shared_quad_state_list.size() * sizeof(cc::SharedQuadState); | 383 to_reserve += p.shared_quad_state_list.size() * sizeof(cc::SharedQuadState); |
383 | 384 |
384 // The largest quad type, verified by a unit test. | 385 // The largest quad type, verified by a unit test. |
385 to_reserve += p.quad_list.size() * cc::LargestDrawQuadSize(); | 386 to_reserve += p.quad_list.size() * cc::LargestDrawQuadSize(); |
| 387 |
| 388 // The actual list of referenced surfaces. |
| 389 to_reserve += p.referenced_surfaces.size() * sizeof(cc::SurfaceId); |
386 return to_reserve; | 390 return to_reserve; |
387 } | 391 } |
388 | 392 |
389 template <typename QuadType> | 393 template <typename QuadType> |
390 static cc::DrawQuad* ReadDrawQuad(const Message* m, | 394 static cc::DrawQuad* ReadDrawQuad(const Message* m, |
391 base::PickleIterator* iter, | 395 base::PickleIterator* iter, |
392 cc::RenderPass* render_pass) { | 396 cc::RenderPass* render_pass) { |
393 QuadType* quad = render_pass->CreateAndAppendDrawQuad<QuadType>(); | 397 QuadType* quad = render_pass->CreateAndAppendDrawQuad<QuadType>(); |
394 if (!ReadParam(m, iter, quad)) | 398 if (!ReadParam(m, iter, quad)) |
395 return NULL; | 399 return NULL; |
396 return quad; | 400 return quad; |
397 } | 401 } |
398 | 402 |
399 bool ParamTraits<cc::RenderPass>::Read(const Message* m, | 403 bool ParamTraits<cc::RenderPass>::Read(const Message* m, |
400 base::PickleIterator* iter, | 404 base::PickleIterator* iter, |
401 param_type* p) { | 405 param_type* p) { |
402 cc::RenderPassId id; | 406 cc::RenderPassId id; |
403 gfx::Rect output_rect; | 407 gfx::Rect output_rect; |
404 gfx::Rect damage_rect; | 408 gfx::Rect damage_rect; |
405 gfx::Transform transform_to_root_target; | 409 gfx::Transform transform_to_root_target; |
406 bool has_transparent_background; | 410 bool has_transparent_background; |
| 411 std::vector<cc::SurfaceId> referenced_surfaces; |
407 size_t quad_list_size; | 412 size_t quad_list_size; |
408 | 413 |
409 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) || | 414 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) || |
410 !ReadParam(m, iter, &damage_rect) || | 415 !ReadParam(m, iter, &damage_rect) || |
411 !ReadParam(m, iter, &transform_to_root_target) || | 416 !ReadParam(m, iter, &transform_to_root_target) || |
412 !ReadParam(m, iter, &has_transparent_background) || | 417 !ReadParam(m, iter, &has_transparent_background) || |
| 418 !ReadParam(m, iter, &referenced_surfaces) || |
413 !ReadParam(m, iter, &quad_list_size)) | 419 !ReadParam(m, iter, &quad_list_size)) |
414 return false; | 420 return false; |
415 | 421 |
416 p->SetAll(id, | 422 p->SetAll(id, |
417 output_rect, | 423 output_rect, |
418 damage_rect, | 424 damage_rect, |
419 transform_to_root_target, | 425 transform_to_root_target, |
420 has_transparent_background); | 426 has_transparent_background); |
| 427 p->referenced_surfaces.swap(referenced_surfaces); |
421 | 428 |
422 for (size_t i = 0; i < quad_list_size; ++i) { | 429 for (size_t i = 0; i < quad_list_size; ++i) { |
423 cc::DrawQuad::Material material; | 430 cc::DrawQuad::Material material; |
424 base::PickleIterator temp_iter = *iter; | 431 base::PickleIterator temp_iter = *iter; |
425 if (!ReadParam(m, &temp_iter, &material)) | 432 if (!ReadParam(m, &temp_iter, &material)) |
426 return false; | 433 return false; |
427 | 434 |
428 cc::DrawQuad* draw_quad = NULL; | 435 cc::DrawQuad* draw_quad = NULL; |
429 switch (material) { | 436 switch (material) { |
430 case cc::DrawQuad::DEBUG_BORDER: | 437 case cc::DrawQuad::DEBUG_BORDER: |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 LogParam(p.id, l); | 506 LogParam(p.id, l); |
500 l->append("), "); | 507 l->append("), "); |
501 LogParam(p.output_rect, l); | 508 LogParam(p.output_rect, l); |
502 l->append(", "); | 509 l->append(", "); |
503 LogParam(p.damage_rect, l); | 510 LogParam(p.damage_rect, l); |
504 l->append(", "); | 511 l->append(", "); |
505 LogParam(p.transform_to_root_target, l); | 512 LogParam(p.transform_to_root_target, l); |
506 l->append(", "); | 513 l->append(", "); |
507 LogParam(p.has_transparent_background, l); | 514 LogParam(p.has_transparent_background, l); |
508 l->append(", "); | 515 l->append(", "); |
| 516 LogParam(p.referenced_surfaces, l); |
| 517 l->append(", "); |
509 | 518 |
510 l->append("["); | 519 l->append("["); |
511 for (const auto& shared_quad_state : p.shared_quad_state_list) { | 520 for (const auto& shared_quad_state : p.shared_quad_state_list) { |
512 if (shared_quad_state != p.shared_quad_state_list.front()) | 521 if (shared_quad_state != p.shared_quad_state_list.front()) |
513 l->append(", "); | 522 l->append(", "); |
514 LogParam(*shared_quad_state, l); | 523 LogParam(*shared_quad_state, l); |
515 } | 524 } |
516 l->append("], ["); | 525 l->append("], ["); |
517 for (const auto& quad : p.quad_list) { | 526 for (const auto& quad : p.quad_list) { |
518 if (quad != p.quad_list.front()) | 527 if (quad != p.quad_list.front()) |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
841 l->append("TextureDrawQuad::OverlayResources(["); | 850 l->append("TextureDrawQuad::OverlayResources(["); |
842 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { | 851 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { |
843 LogParam(p.size_in_pixels[i], l); | 852 LogParam(p.size_in_pixels[i], l); |
844 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1)) | 853 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1)) |
845 l->append(", "); | 854 l->append(", "); |
846 } | 855 } |
847 l->append("])"); | 856 l->append("])"); |
848 } | 857 } |
849 | 858 |
850 } // namespace IPC | 859 } // namespace IPC |
OLD | NEW |