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

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

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