| 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 "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "cc/output/compositor_frame.h" | 8 #include "cc/output/compositor_frame.h" |
| 9 #include "cc/output/filter_operations.h" | 9 #include "cc/output/filter_operations.h" |
| 10 #include "content/public/common/common_param_traits.h" | 10 #include "content/public/common/common_param_traits.h" |
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 362 if (shared_quad_state_index >= sqs_list.size()) { | 362 if (shared_quad_state_index >= sqs_list.size()) { |
| 363 WriteParam(m, bad_index); | 363 WriteParam(m, bad_index); |
| 364 continue; | 364 continue; |
| 365 } | 365 } |
| 366 | 366 |
| 367 DCHECK_LT(shared_quad_state_index, p.shared_quad_state_list.size()); | 367 DCHECK_LT(shared_quad_state_index, p.shared_quad_state_list.size()); |
| 368 WriteParam(m, shared_quad_state_index); | 368 WriteParam(m, shared_quad_state_index); |
| 369 } | 369 } |
| 370 } | 370 } |
| 371 | 371 |
| 372 size_t ParamTraits<cc::RenderPass>::ReserveSizeForWrite(const param_type& p) { |
| 373 size_t to_reserve = sizeof(cc::RenderPass); |
| 374 |
| 375 to_reserve += p.shared_quad_state_list.size() * sizeof(cc::SharedQuadState); |
| 376 |
| 377 // The shared_quad_state_index for each quad. |
| 378 to_reserve += p.quad_list.size() * sizeof(size_t); |
| 379 |
| 380 // The largest quad type, verified by a unit test. |
| 381 to_reserve += p.quad_list.size() * sizeof(cc::RenderPassDrawQuad); |
| 382 return to_reserve; |
| 383 } |
| 384 |
| 372 template<typename QuadType> | 385 template<typename QuadType> |
| 373 static scoped_ptr<cc::DrawQuad> ReadDrawQuad(const Message* m, | 386 static scoped_ptr<cc::DrawQuad> ReadDrawQuad(const Message* m, |
| 374 PickleIterator* iter) { | 387 PickleIterator* iter) { |
| 375 scoped_ptr<QuadType> quad = QuadType::Create(); | 388 scoped_ptr<QuadType> quad = QuadType::Create(); |
| 376 if (!ReadParam(m, iter, quad.get())) | 389 if (!ReadParam(m, iter, quad.get())) |
| 377 return scoped_ptr<QuadType>().template PassAs<cc::DrawQuad>(); | 390 return scoped_ptr<QuadType>().template PassAs<cc::DrawQuad>(); |
| 378 return quad.template PassAs<cc::DrawQuad>(); | 391 return quad.template PassAs<cc::DrawQuad>(); |
| 379 } | 392 } |
| 380 | 393 |
| 381 bool ParamTraits<cc::RenderPass>::Read( | 394 bool ParamTraits<cc::RenderPass>::Read( |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 LogParam(p.last_software_frame_id, l); | 686 LogParam(p.last_software_frame_id, l); |
| 674 l->append(", "); | 687 l->append(", "); |
| 675 if (p.gl_frame_data) | 688 if (p.gl_frame_data) |
| 676 LogParam(*p.gl_frame_data, l); | 689 LogParam(*p.gl_frame_data, l); |
| 677 l->append(")"); | 690 l->append(")"); |
| 678 } | 691 } |
| 679 | 692 |
| 680 void ParamTraits<cc::DelegatedFrameData>::Write(Message* m, | 693 void ParamTraits<cc::DelegatedFrameData>::Write(Message* m, |
| 681 const param_type& p) { | 694 const param_type& p) { |
| 682 DCHECK_NE(0u, p.render_pass_list.size()); | 695 DCHECK_NE(0u, p.render_pass_list.size()); |
| 696 |
| 697 size_t to_reserve = p.resource_list.size() * sizeof(cc::TransferableResource); |
| 698 for (size_t i = 0; i < p.render_pass_list.size(); ++i) { |
| 699 const cc::RenderPass* pass = p.render_pass_list[i]; |
| 700 to_reserve += ParamTraits<cc::RenderPass>::ReserveSizeForWrite(*pass); |
| 701 } |
| 702 m->Reserve(to_reserve); |
| 703 |
| 683 WriteParam(m, p.resource_list); | 704 WriteParam(m, p.resource_list); |
| 684 WriteParam(m, p.render_pass_list.size()); | 705 WriteParam(m, p.render_pass_list.size()); |
| 685 for (size_t i = 0; i < p.render_pass_list.size(); ++i) | 706 for (size_t i = 0; i < p.render_pass_list.size(); ++i) |
| 686 WriteParam(m, *p.render_pass_list[i]); | 707 WriteParam(m, *p.render_pass_list[i]); |
| 687 } | 708 } |
| 688 | 709 |
| 689 bool ParamTraits<cc::DelegatedFrameData>::Read(const Message* m, | 710 bool ParamTraits<cc::DelegatedFrameData>::Read(const Message* m, |
| 690 PickleIterator* iter, | 711 PickleIterator* iter, |
| 691 param_type* p) { | 712 param_type* p) { |
| 692 const static size_t kMaxRenderPasses = 10000; | 713 const static size_t kMaxRenderPasses = 10000; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 712 l->append(", ["); | 733 l->append(", ["); |
| 713 for (size_t i = 0; i < p.render_pass_list.size(); ++i) { | 734 for (size_t i = 0; i < p.render_pass_list.size(); ++i) { |
| 714 if (i) | 735 if (i) |
| 715 l->append(", "); | 736 l->append(", "); |
| 716 LogParam(*p.render_pass_list[i], l); | 737 LogParam(*p.render_pass_list[i], l); |
| 717 } | 738 } |
| 718 l->append("])"); | 739 l->append("])"); |
| 719 } | 740 } |
| 720 | 741 |
| 721 } // namespace IPC | 742 } // namespace IPC |
| OLD | NEW |