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

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

Issue 2449853004: Getting rid of DelegatedFrameData (Closed)
Patch Set: IsEmpty + rebase 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
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 663 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 namespace { 674 namespace {
675 enum CompositorFrameType { 675 enum CompositorFrameType {
676 NO_FRAME, 676 NO_FRAME,
677 DELEGATED_FRAME, 677 DELEGATED_FRAME,
678 }; 678 };
679 } 679 }
680 680
681 void ParamTraits<cc::CompositorFrame>::Write(base::Pickle* m, 681 void ParamTraits<cc::CompositorFrame>::Write(base::Pickle* m,
682 const param_type& p) { 682 const param_type& p) {
683 WriteParam(m, p.metadata); 683 WriteParam(m, p.metadata);
684 if (p.delegated_frame_data) { 684 if (p.render_pass_list.empty()) {
685 WriteParam(m, static_cast<int>(DELEGATED_FRAME));
686 WriteParam(m, *p.delegated_frame_data);
687 } else {
688 WriteParam(m, static_cast<int>(NO_FRAME)); 685 WriteParam(m, static_cast<int>(NO_FRAME));
danakj 2016/10/27 23:06:56 I don't think we need this NO_FRAME vs DELEGATED_F
Saman Sami 2016/10/28 16:47:35 Yes. I fixed this in later patches.
686 return;
689 } 687 }
690 } 688 WriteParam(m, static_cast<int>(DELEGATED_FRAME));
691
692 bool ParamTraits<cc::CompositorFrame>::Read(const base::Pickle* m,
693 base::PickleIterator* iter,
694 param_type* p) {
695 if (!ReadParam(m, iter, &p->metadata))
696 return false;
697
698 int compositor_frame_type;
699 if (!ReadParam(m, iter, &compositor_frame_type))
700 return false;
701
702 switch (compositor_frame_type) {
703 case DELEGATED_FRAME:
704 p->delegated_frame_data.reset(new cc::DelegatedFrameData());
705 if (!ReadParam(m, iter, p->delegated_frame_data.get()))
706 return false;
707 break;
708 case NO_FRAME:
709 break;
710 default:
711 return false;
712 }
713 return true;
714 }
715
716 void ParamTraits<cc::CompositorFrame>::Log(const param_type& p,
717 std::string* l) {
718 l->append("CompositorFrame(");
719 LogParam(p.metadata, l);
720 l->append(", ");
721 if (p.delegated_frame_data)
722 LogParam(*p.delegated_frame_data, l);
723 l->append(")");
724 }
725
726 void ParamTraits<cc::DelegatedFrameData>::Write(base::Pickle* m,
727 const param_type& p) {
728 DCHECK_NE(0u, p.render_pass_list.size());
729
730 size_t to_reserve = 0u; 689 size_t to_reserve = 0u;
731 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource); 690 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource);
732 for (const auto& pass : p.render_pass_list) { 691 for (const auto& pass : p.render_pass_list) {
733 to_reserve += sizeof(size_t) * 2; 692 to_reserve += sizeof(size_t) * 2;
734 to_reserve += ReserveSizeForRenderPassWrite(*pass); 693 to_reserve += ReserveSizeForRenderPassWrite(*pass);
735 } 694 }
736 m->Reserve(to_reserve); 695 m->Reserve(to_reserve);
737 696
738 WriteParam(m, p.resource_list); 697 WriteParam(m, p.resource_list);
739 WriteParam(m, base::checked_cast<uint32_t>(p.render_pass_list.size())); 698 WriteParam(m, base::checked_cast<uint32_t>(p.render_pass_list.size()));
740 for (const auto& pass : p.render_pass_list) { 699 for (const auto& pass : p.render_pass_list) {
741 WriteParam(m, base::checked_cast<uint32_t>(pass->quad_list.size())); 700 WriteParam(m, base::checked_cast<uint32_t>(pass->quad_list.size()));
742 WriteParam( 701 WriteParam(
743 m, base::checked_cast<uint32_t>(pass->shared_quad_state_list.size())); 702 m, base::checked_cast<uint32_t>(pass->shared_quad_state_list.size()));
744 WriteParam(m, *pass); 703 WriteParam(m, *pass);
745 } 704 }
746 } 705 }
747 706
748 bool ParamTraits<cc::DelegatedFrameData>::Read(const base::Pickle* m, 707 bool ParamTraits<cc::CompositorFrame>::Read(const base::Pickle* m,
749 base::PickleIterator* iter, 708 base::PickleIterator* iter,
750 param_type* p) { 709 param_type* p) {
710 if (!ReadParam(m, iter, &p->metadata))
711 return false;
712
713 int compositor_frame_type;
714 if (!ReadParam(m, iter, &compositor_frame_type))
715 return false;
716
717 if (compositor_frame_type == NO_FRAME) {
718 return true;
719 }
720
721 if (compositor_frame_type != DELEGATED_FRAME)
722 return false;
723
751 const size_t kMaxRenderPasses = 10000; 724 const size_t kMaxRenderPasses = 10000;
752 const size_t kMaxSharedQuadStateListSize = 100000; 725 const size_t kMaxSharedQuadStateListSize = 100000;
753 const size_t kMaxQuadListSize = 1000000; 726 const size_t kMaxQuadListSize = 1000000;
754 727
755 std::set<cc::RenderPassId> pass_set; 728 std::set<cc::RenderPassId> pass_set;
756 729
757 uint32_t num_render_passes; 730 uint32_t num_render_passes;
758 if (!ReadParam(m, iter, &p->resource_list) || 731 if (!ReadParam(m, iter, &p->resource_list) ||
759 !ReadParam(m, iter, &num_render_passes) || 732 !ReadParam(m, iter, &num_render_passes) ||
760 num_render_passes > kMaxRenderPasses || num_render_passes == 0) 733 num_render_passes > kMaxRenderPasses || num_render_passes == 0)
(...skipping 17 matching lines...) Expand all
778 if (quad->material != cc::DrawQuad::RENDER_PASS) 751 if (quad->material != cc::DrawQuad::RENDER_PASS)
779 continue; 752 continue;
780 const cc::RenderPassDrawQuad* rpdq = 753 const cc::RenderPassDrawQuad* rpdq =
781 cc::RenderPassDrawQuad::MaterialCast(quad); 754 cc::RenderPassDrawQuad::MaterialCast(quad);
782 if (!pass_set.count(rpdq->render_pass_id)) 755 if (!pass_set.count(rpdq->render_pass_id))
783 return false; 756 return false;
784 } 757 }
785 pass_set.insert(render_pass->id); 758 pass_set.insert(render_pass->id);
786 p->render_pass_list.push_back(std::move(render_pass)); 759 p->render_pass_list.push_back(std::move(render_pass));
787 } 760 }
761
788 return true; 762 return true;
789 } 763 }
790 764
791 void ParamTraits<cc::DelegatedFrameData>::Log(const param_type& p, 765 void ParamTraits<cc::CompositorFrame>::Log(const param_type& p,
792 std::string* l) { 766 std::string* l) {
793 l->append("DelegatedFrameData("); 767 l->append("CompositorFrame(");
768 LogParam(p.metadata, l);
769 l->append(", ");
794 LogParam(p.resource_list, l); 770 LogParam(p.resource_list, l);
795 l->append(", ["); 771 l->append(", [");
796 for (size_t i = 0; i < p.render_pass_list.size(); ++i) { 772 for (size_t i = 0; i < p.render_pass_list.size(); ++i) {
797 if (i) 773 if (i)
798 l->append(", "); 774 l->append(", ");
799 LogParam(*p.render_pass_list[i], l); 775 LogParam(*p.render_pass_list[i], l);
800 } 776 }
801 l->append("])"); 777 l->append("])");
802 } 778 }
803 779
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_ 994 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_
1019 #include "cc/ipc/cc_param_traits_macros.h" 995 #include "cc/ipc/cc_param_traits_macros.h"
1020 } // namespace IPC 996 } // namespace IPC
1021 997
1022 // Generate param traits log methods. 998 // Generate param traits log methods.
1023 #include "ipc/param_traits_log_macros.h" 999 #include "ipc/param_traits_log_macros.h"
1024 namespace IPC { 1000 namespace IPC {
1025 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_ 1001 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_
1026 #include "cc/ipc/cc_param_traits_macros.h" 1002 #include "cc/ipc/cc_param_traits_macros.h"
1027 } // namespace IPC 1003 } // namespace IPC
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698