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

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

Issue 2449853004: 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
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.IsEmpty()) {
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));
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()); 689 DCHECK_NE(0u, p.render_pass_list.size());
729
730 size_t to_reserve = 0u; 690 size_t to_reserve = 0u;
731 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource); 691 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource);
732 for (const auto& pass : p.render_pass_list) { 692 for (const auto& pass : p.render_pass_list) {
733 to_reserve += sizeof(size_t) * 2; 693 to_reserve += sizeof(size_t) * 2;
734 to_reserve += ReserveSizeForRenderPassWrite(*pass); 694 to_reserve += ReserveSizeForRenderPassWrite(*pass);
735 } 695 }
736 m->Reserve(to_reserve); 696 m->Reserve(to_reserve);
737 697
738 WriteParam(m, p.resource_list); 698 WriteParam(m, p.resource_list);
739 WriteParam(m, base::checked_cast<uint32_t>(p.render_pass_list.size())); 699 WriteParam(m, base::checked_cast<uint32_t>(p.render_pass_list.size()));
740 for (const auto& pass : p.render_pass_list) { 700 for (const auto& pass : p.render_pass_list) {
741 WriteParam(m, base::checked_cast<uint32_t>(pass->quad_list.size())); 701 WriteParam(m, base::checked_cast<uint32_t>(pass->quad_list.size()));
742 WriteParam( 702 WriteParam(
743 m, base::checked_cast<uint32_t>(pass->shared_quad_state_list.size())); 703 m, base::checked_cast<uint32_t>(pass->shared_quad_state_list.size()));
744 WriteParam(m, *pass); 704 WriteParam(m, *pass);
745 } 705 }
746 } 706 }
747 707
748 bool ParamTraits<cc::DelegatedFrameData>::Read(const base::Pickle* m, 708 bool ParamTraits<cc::CompositorFrame>::Read(const base::Pickle* m,
749 base::PickleIterator* iter, 709 base::PickleIterator* iter,
750 param_type* p) { 710 param_type* p) {
711 if (!ReadParam(m, iter, &p->metadata))
712 return false;
713
714 int compositor_frame_type;
715 if (!ReadParam(m, iter, &compositor_frame_type))
716 return false;
717
718 if (compositor_frame_type == NO_FRAME) {
719 p->render_pass_list.clear();
danakj 2016/10/25 22:23:07 Why would they not already be empty?
Fady Samuel 2016/10/26 03:13:55 You might want to overwrite an existing Compositor
Saman Sami 2016/10/26 14:41:18 Since the original code assumes the frame is empty
720 p->resource_list.clear();
721 return true;
722 }
723
724 if (compositor_frame_type != DELEGATED_FRAME)
725 return false;
726
751 const size_t kMaxRenderPasses = 10000; 727 const size_t kMaxRenderPasses = 10000;
752 const size_t kMaxSharedQuadStateListSize = 100000; 728 const size_t kMaxSharedQuadStateListSize = 100000;
753 const size_t kMaxQuadListSize = 1000000; 729 const size_t kMaxQuadListSize = 1000000;
754 730
755 std::set<cc::RenderPassId> pass_set; 731 std::set<cc::RenderPassId> pass_set;
756 732
757 uint32_t num_render_passes; 733 uint32_t num_render_passes;
758 if (!ReadParam(m, iter, &p->resource_list) || 734 if (!ReadParam(m, iter, &p->resource_list) ||
759 !ReadParam(m, iter, &num_render_passes) || 735 !ReadParam(m, iter, &num_render_passes) ||
760 num_render_passes > kMaxRenderPasses || num_render_passes == 0) 736 num_render_passes > kMaxRenderPasses || num_render_passes == 0)
(...skipping 17 matching lines...) Expand all
778 if (quad->material != cc::DrawQuad::RENDER_PASS) 754 if (quad->material != cc::DrawQuad::RENDER_PASS)
779 continue; 755 continue;
780 const cc::RenderPassDrawQuad* rpdq = 756 const cc::RenderPassDrawQuad* rpdq =
781 cc::RenderPassDrawQuad::MaterialCast(quad); 757 cc::RenderPassDrawQuad::MaterialCast(quad);
782 if (!pass_set.count(rpdq->render_pass_id)) 758 if (!pass_set.count(rpdq->render_pass_id))
783 return false; 759 return false;
784 } 760 }
785 pass_set.insert(render_pass->id); 761 pass_set.insert(render_pass->id);
786 p->render_pass_list.push_back(std::move(render_pass)); 762 p->render_pass_list.push_back(std::move(render_pass));
787 } 763 }
764
788 return true; 765 return true;
789 } 766 }
790 767
791 void ParamTraits<cc::DelegatedFrameData>::Log(const param_type& p, 768 void ParamTraits<cc::CompositorFrame>::Log(const param_type& p,
792 std::string* l) { 769 std::string* l) {
793 l->append("DelegatedFrameData("); 770 l->append("CompositorFrame(");
771 LogParam(p.metadata, l);
772 l->append(", ");
794 LogParam(p.resource_list, l); 773 LogParam(p.resource_list, l);
795 l->append(", ["); 774 l->append(", [");
796 for (size_t i = 0; i < p.render_pass_list.size(); ++i) { 775 for (size_t i = 0; i < p.render_pass_list.size(); ++i) {
797 if (i) 776 if (i)
798 l->append(", "); 777 l->append(", ");
799 LogParam(*p.render_pass_list[i], l); 778 LogParam(*p.render_pass_list[i], l);
800 } 779 }
801 l->append("])"); 780 l->append("])");
802 } 781 }
803 782
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_ 997 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_
1019 #include "cc/ipc/cc_param_traits_macros.h" 998 #include "cc/ipc/cc_param_traits_macros.h"
1020 } // namespace IPC 999 } // namespace IPC
1021 1000
1022 // Generate param traits log methods. 1001 // Generate param traits log methods.
1023 #include "ipc/param_traits_log_macros.h" 1002 #include "ipc/param_traits_log_macros.h"
1024 namespace IPC { 1003 namespace IPC {
1025 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_ 1004 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_
1026 #include "cc/ipc/cc_param_traits_macros.h" 1005 #include "cc/ipc/cc_param_traits_macros.h"
1027 } // namespace IPC 1006 } // namespace IPC
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698