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

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

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

Powered by Google App Engine
This is Rietveld 408576698