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

Side by Side Diff: cc/ipc/cc_param_traits.cc

Issue 2503203002: Revert "Getting rid of DelegatedFrameData" (Closed)
Patch Set: Created 4 years, 1 month 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/ipc/cc_param_traits.h ('k') | cc/ipc/cc_param_traits_unittest.cc » ('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 (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 "cc/ipc/cc_param_traits.h" 5 #include "cc/ipc/cc_param_traits.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/numerics/safe_conversions.h" 10 #include "base/numerics/safe_conversions.h"
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 } 665 }
666 666
667 void ParamTraits<cc::SurfaceId>::Log(const param_type& p, std::string* l) { 667 void ParamTraits<cc::SurfaceId>::Log(const param_type& p, std::string* l) {
668 l->append("SurfaceId("); 668 l->append("SurfaceId(");
669 LogParam(p.frame_sink_id(), l); 669 LogParam(p.frame_sink_id(), l);
670 l->append(", "); 670 l->append(", ");
671 LogParam(p.local_frame_id(), l); 671 LogParam(p.local_frame_id(), l);
672 l->append(")"); 672 l->append(")");
673 } 673 }
674 674
675 namespace {
676 enum CompositorFrameType {
677 NO_FRAME,
678 DELEGATED_FRAME,
679 };
680 }
681
675 void ParamTraits<cc::CompositorFrame>::Write(base::Pickle* m, 682 void ParamTraits<cc::CompositorFrame>::Write(base::Pickle* m,
676 const param_type& p) { 683 const param_type& p) {
677 WriteParam(m, p.metadata); 684 WriteParam(m, p.metadata);
685 if (p.delegated_frame_data) {
686 WriteParam(m, static_cast<int>(DELEGATED_FRAME));
687 WriteParam(m, *p.delegated_frame_data);
688 } else {
689 WriteParam(m, static_cast<int>(NO_FRAME));
690 }
691 }
692
693 bool ParamTraits<cc::CompositorFrame>::Read(const base::Pickle* m,
694 base::PickleIterator* iter,
695 param_type* p) {
696 if (!ReadParam(m, iter, &p->metadata))
697 return false;
698
699 int compositor_frame_type;
700 if (!ReadParam(m, iter, &compositor_frame_type))
701 return false;
702
703 switch (compositor_frame_type) {
704 case DELEGATED_FRAME:
705 p->delegated_frame_data.reset(new cc::DelegatedFrameData());
706 if (!ReadParam(m, iter, p->delegated_frame_data.get()))
707 return false;
708 break;
709 case NO_FRAME:
710 break;
711 default:
712 return false;
713 }
714 return true;
715 }
716
717 void ParamTraits<cc::CompositorFrame>::Log(const param_type& p,
718 std::string* l) {
719 l->append("CompositorFrame(");
720 LogParam(p.metadata, l);
721 l->append(", ");
722 if (p.delegated_frame_data)
723 LogParam(*p.delegated_frame_data, l);
724 l->append(")");
725 }
726
727 void ParamTraits<cc::DelegatedFrameData>::Write(base::Pickle* m,
728 const param_type& p) {
729 DCHECK_NE(0u, p.render_pass_list.size());
730
678 size_t to_reserve = 0u; 731 size_t to_reserve = 0u;
679 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource); 732 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource);
680 for (const auto& pass : p.render_pass_list) { 733 for (const auto& pass : p.render_pass_list) {
681 to_reserve += sizeof(size_t) * 2; 734 to_reserve += sizeof(size_t) * 2;
682 to_reserve += ReserveSizeForRenderPassWrite(*pass); 735 to_reserve += ReserveSizeForRenderPassWrite(*pass);
683 } 736 }
684 m->Reserve(to_reserve); 737 m->Reserve(to_reserve);
685 738
686 WriteParam(m, p.resource_list); 739 WriteParam(m, p.resource_list);
687 WriteParam(m, base::checked_cast<uint32_t>(p.render_pass_list.size())); 740 WriteParam(m, base::checked_cast<uint32_t>(p.render_pass_list.size()));
688 for (const auto& pass : p.render_pass_list) { 741 for (const auto& pass : p.render_pass_list) {
689 WriteParam(m, base::checked_cast<uint32_t>(pass->quad_list.size())); 742 WriteParam(m, base::checked_cast<uint32_t>(pass->quad_list.size()));
690 WriteParam( 743 WriteParam(
691 m, base::checked_cast<uint32_t>(pass->shared_quad_state_list.size())); 744 m, base::checked_cast<uint32_t>(pass->shared_quad_state_list.size()));
692 WriteParam(m, *pass); 745 WriteParam(m, *pass);
693 } 746 }
694 } 747 }
695 748
696 bool ParamTraits<cc::CompositorFrame>::Read(const base::Pickle* m, 749 bool ParamTraits<cc::DelegatedFrameData>::Read(const base::Pickle* m,
697 base::PickleIterator* iter, 750 base::PickleIterator* iter,
698 param_type* p) { 751 param_type* p) {
699 if (!ReadParam(m, iter, &p->metadata))
700 return false;
701
702 const size_t kMaxRenderPasses = 10000; 752 const size_t kMaxRenderPasses = 10000;
703 const size_t kMaxSharedQuadStateListSize = 100000; 753 const size_t kMaxSharedQuadStateListSize = 100000;
704 const size_t kMaxQuadListSize = 1000000; 754 const size_t kMaxQuadListSize = 1000000;
705 755
706 std::set<cc::RenderPassId> pass_set; 756 std::set<cc::RenderPassId> pass_set;
707 757
708 uint32_t num_render_passes; 758 uint32_t num_render_passes;
709 if (!ReadParam(m, iter, &p->resource_list) || 759 if (!ReadParam(m, iter, &p->resource_list) ||
710 !ReadParam(m, iter, &num_render_passes) || 760 !ReadParam(m, iter, &num_render_passes) ||
711 num_render_passes > kMaxRenderPasses) 761 num_render_passes > kMaxRenderPasses || num_render_passes == 0)
712 return false; 762 return false;
713 for (uint32_t i = 0; i < num_render_passes; ++i) { 763 for (uint32_t i = 0; i < num_render_passes; ++i) {
714 uint32_t quad_list_size; 764 uint32_t quad_list_size;
715 uint32_t shared_quad_state_list_size; 765 uint32_t shared_quad_state_list_size;
716 if (!ReadParam(m, iter, &quad_list_size) || 766 if (!ReadParam(m, iter, &quad_list_size) ||
717 !ReadParam(m, iter, &shared_quad_state_list_size) || 767 !ReadParam(m, iter, &shared_quad_state_list_size) ||
718 quad_list_size > kMaxQuadListSize || 768 quad_list_size > kMaxQuadListSize ||
719 shared_quad_state_list_size > kMaxSharedQuadStateListSize) 769 shared_quad_state_list_size > kMaxSharedQuadStateListSize)
720 return false; 770 return false;
721 std::unique_ptr<cc::RenderPass> render_pass = 771 std::unique_ptr<cc::RenderPass> render_pass =
722 cc::RenderPass::Create(static_cast<size_t>(shared_quad_state_list_size), 772 cc::RenderPass::Create(static_cast<size_t>(shared_quad_state_list_size),
723 static_cast<size_t>(quad_list_size)); 773 static_cast<size_t>(quad_list_size));
724 if (!ReadParam(m, iter, render_pass.get())) 774 if (!ReadParam(m, iter, render_pass.get()))
725 return false; 775 return false;
726 // Validate that each RenderPassDrawQuad points at a valid RenderPass 776 // Validate that each RenderPassDrawQuad points at a valid RenderPass
727 // earlier in the frame. 777 // earlier in the frame.
728 for (const auto* quad : render_pass->quad_list) { 778 for (const auto* quad : render_pass->quad_list) {
729 if (quad->material != cc::DrawQuad::RENDER_PASS) 779 if (quad->material != cc::DrawQuad::RENDER_PASS)
730 continue; 780 continue;
731 const cc::RenderPassDrawQuad* rpdq = 781 const cc::RenderPassDrawQuad* rpdq =
732 cc::RenderPassDrawQuad::MaterialCast(quad); 782 cc::RenderPassDrawQuad::MaterialCast(quad);
733 if (!pass_set.count(rpdq->render_pass_id)) 783 if (!pass_set.count(rpdq->render_pass_id))
734 return false; 784 return false;
735 } 785 }
736 pass_set.insert(render_pass->id); 786 pass_set.insert(render_pass->id);
737 p->render_pass_list.push_back(std::move(render_pass)); 787 p->render_pass_list.push_back(std::move(render_pass));
738 } 788 }
739
740 return true; 789 return true;
741 } 790 }
742 791
743 void ParamTraits<cc::CompositorFrame>::Log(const param_type& p, 792 void ParamTraits<cc::DelegatedFrameData>::Log(const param_type& p,
744 std::string* l) { 793 std::string* l) {
745 l->append("CompositorFrame("); 794 l->append("DelegatedFrameData(");
746 LogParam(p.metadata, l);
747 l->append(", ");
748 LogParam(p.resource_list, l); 795 LogParam(p.resource_list, l);
749 l->append(", ["); 796 l->append(", [");
750 for (size_t i = 0; i < p.render_pass_list.size(); ++i) { 797 for (size_t i = 0; i < p.render_pass_list.size(); ++i) {
751 if (i) 798 if (i)
752 l->append(", "); 799 l->append(", ");
753 LogParam(*p.render_pass_list[i], l); 800 LogParam(*p.render_pass_list[i], l);
754 } 801 }
755 l->append("])"); 802 l->append("])");
756 } 803 }
757 804
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
972 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_ 1019 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_
973 #include "cc/ipc/cc_param_traits_macros.h" 1020 #include "cc/ipc/cc_param_traits_macros.h"
974 } // namespace IPC 1021 } // namespace IPC
975 1022
976 // Generate param traits log methods. 1023 // Generate param traits log methods.
977 #include "ipc/param_traits_log_macros.h" 1024 #include "ipc/param_traits_log_macros.h"
978 namespace IPC { 1025 namespace IPC {
979 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_ 1026 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_
980 #include "cc/ipc/cc_param_traits_macros.h" 1027 #include "cc/ipc/cc_param_traits_macros.h"
981 } // namespace IPC 1028 } // namespace IPC
OLDNEW
« no previous file with comments | « cc/ipc/cc_param_traits.h ('k') | cc/ipc/cc_param_traits_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698