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

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

Issue 1978053002: Move cc ParamTraits to cc/ipc (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Ignore size_t warnings Created 4 years, 7 months 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_macros.h » ('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 "content/common/cc_messages.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"
11 #include "base/time/time.h"
11 #include "cc/output/compositor_frame.h" 12 #include "cc/output/compositor_frame.h"
12 #include "cc/output/filter_operations.h" 13 #include "cc/output/filter_operations.h"
14 #include "cc/quads/debug_border_draw_quad.h"
13 #include "cc/quads/draw_quad.h" 15 #include "cc/quads/draw_quad.h"
16 #include "cc/quads/io_surface_draw_quad.h"
14 #include "cc/quads/largest_draw_quad.h" 17 #include "cc/quads/largest_draw_quad.h"
15 #include "cc/quads/render_pass_id.h" 18 #include "cc/quads/render_pass_draw_quad.h"
16 #include "content/public/common/common_param_traits.h" 19 #include "cc/quads/solid_color_draw_quad.h"
20 #include "cc/quads/surface_draw_quad.h"
21 #include "cc/quads/tile_draw_quad.h"
22 #include "cc/quads/yuv_video_draw_quad.h"
17 #include "third_party/skia/include/core/SkData.h" 23 #include "third_party/skia/include/core/SkData.h"
18 #include "third_party/skia/include/core/SkFlattenableSerialization.h" 24 #include "third_party/skia/include/core/SkFlattenableSerialization.h"
19 #include "third_party/skia/include/core/SkImageFilter.h" 25 #include "third_party/skia/include/core/SkImageFilter.h"
20 #include "third_party/skia/include/core/SkRefCnt.h" 26 #include "third_party/skia/include/core/SkRefCnt.h"
27 #include "ui/gfx/ipc/geometry/gfx_param_traits.h"
28 #include "ui/gfx/ipc/skia/gfx_skia_param_traits.h"
21 29
22 namespace IPC { 30 namespace IPC {
23 31
24 void ParamTraits<cc::FilterOperation>::GetSize(base::PickleSizer* s, 32 void ParamTraits<cc::FilterOperation>::GetSize(base::PickleSizer* s,
25 const param_type& p) { 33 const param_type& p) {
26 GetParamSize(s, p.type()); 34 GetParamSize(s, p.type());
27 switch (p.type()) { 35 switch (p.type()) {
28 case cc::FilterOperation::GRAYSCALE: 36 case cc::FilterOperation::GRAYSCALE:
29 case cc::FilterOperation::SEPIA: 37 case cc::FilterOperation::SEPIA:
30 case cc::FilterOperation::SATURATE: 38 case cc::FilterOperation::SATURATE:
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 if (!ReadParam(m, iter, &matrix[i])) 152 if (!ReadParam(m, iter, &matrix[i]))
145 break; 153 break;
146 } 154 }
147 if (i == 20) { 155 if (i == 20) {
148 r->set_matrix(matrix); 156 r->set_matrix(matrix);
149 success = true; 157 success = true;
150 } 158 }
151 break; 159 break;
152 } 160 }
153 case cc::FilterOperation::ZOOM: 161 case cc::FilterOperation::ZOOM:
154 if (ReadParam(m, iter, &amount) && 162 if (ReadParam(m, iter, &amount) && ReadParam(m, iter, &zoom_inset) &&
155 ReadParam(m, iter, &zoom_inset) && 163 amount >= 0.f && zoom_inset >= 0) {
156 amount >= 0.f &&
157 zoom_inset >= 0) {
158 r->set_amount(amount); 164 r->set_amount(amount);
159 r->set_zoom_inset(zoom_inset); 165 r->set_zoom_inset(zoom_inset);
160 success = true; 166 success = true;
161 } 167 }
162 break; 168 break;
163 case cc::FilterOperation::REFERENCE: { 169 case cc::FilterOperation::REFERENCE: {
164 sk_sp<SkImageFilter> filter; 170 sk_sp<SkImageFilter> filter;
165 if (!ReadParam(m, iter, &filter)) { 171 if (!ReadParam(m, iter, &filter)) {
166 success = false; 172 success = false;
167 break; 173 break;
168 } 174 }
169 r->set_image_filter(std::move(filter)); 175 r->set_image_filter(std::move(filter));
170 success = true; 176 success = true;
171 break; 177 break;
172 } 178 }
173 case cc::FilterOperation::ALPHA_THRESHOLD: 179 case cc::FilterOperation::ALPHA_THRESHOLD:
174 break; 180 break;
175 } 181 }
176 return success; 182 return success;
177 } 183 }
178 184
179 void ParamTraits<cc::FilterOperation>::Log( 185 void ParamTraits<cc::FilterOperation>::Log(const param_type& p,
180 const param_type& p, std::string* l) { 186 std::string* l) {
181 l->append("("); 187 l->append("(");
182 LogParam(static_cast<unsigned>(p.type()), l); 188 LogParam(static_cast<unsigned>(p.type()), l);
183 l->append(", "); 189 l->append(", ");
184 190
185 switch (p.type()) { 191 switch (p.type()) {
186 case cc::FilterOperation::GRAYSCALE: 192 case cc::FilterOperation::GRAYSCALE:
187 case cc::FilterOperation::SEPIA: 193 case cc::FilterOperation::SEPIA:
188 case cc::FilterOperation::SATURATE: 194 case cc::FilterOperation::SATURATE:
189 case cc::FilterOperation::HUE_ROTATE: 195 case cc::FilterOperation::HUE_ROTATE:
190 case cc::FilterOperation::INVERT: 196 case cc::FilterOperation::INVERT:
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 255
250 for (std::size_t i = 0; i < count; ++i) { 256 for (std::size_t i = 0; i < count; ++i) {
251 cc::FilterOperation op = cc::FilterOperation::CreateEmptyFilter(); 257 cc::FilterOperation op = cc::FilterOperation::CreateEmptyFilter();
252 if (!ReadParam(m, iter, &op)) 258 if (!ReadParam(m, iter, &op))
253 return false; 259 return false;
254 r->Append(op); 260 r->Append(op);
255 } 261 }
256 return true; 262 return true;
257 } 263 }
258 264
259 void ParamTraits<cc::FilterOperations>::Log( 265 void ParamTraits<cc::FilterOperations>::Log(const param_type& p,
260 const param_type& p, std::string* l) { 266 std::string* l) {
261 l->append("("); 267 l->append("(");
262 for (std::size_t i = 0; i < p.size(); ++i) { 268 for (std::size_t i = 0; i < p.size(); ++i) {
263 if (i) 269 if (i)
264 l->append(", "); 270 l->append(", ");
265 LogParam(p.at(i), l); 271 LogParam(p.at(i), l);
266 } 272 }
267 l->append(")"); 273 l->append(")");
268 } 274 }
269 275
270 void ParamTraits<sk_sp<SkImageFilter>>::GetSize(base::PickleSizer* s, 276 void ParamTraits<sk_sp<SkImageFilter>>::GetSize(base::PickleSizer* s,
(...skipping 28 matching lines...) Expand all
299 if (length > 0) { 305 if (length > 0) {
300 SkFlattenable* flattenable = SkValidatingDeserializeFlattenable( 306 SkFlattenable* flattenable = SkValidatingDeserializeFlattenable(
301 data, length, SkImageFilter::GetFlattenableType()); 307 data, length, SkImageFilter::GetFlattenableType());
302 *r = sk_sp<SkImageFilter>(static_cast<SkImageFilter*>(flattenable)); 308 *r = sk_sp<SkImageFilter>(static_cast<SkImageFilter*>(flattenable));
303 } else { 309 } else {
304 r->reset(); 310 r->reset();
305 } 311 }
306 return true; 312 return true;
307 } 313 }
308 314
309 void ParamTraits<sk_sp<SkImageFilter> >::Log( 315 void ParamTraits<sk_sp<SkImageFilter>>::Log(const param_type& p,
310 const param_type& p, std::string* l) { 316 std::string* l) {
311 l->append("("); 317 l->append("(");
312 LogParam(p.get() ? p->countInputs() : 0, l); 318 LogParam(p.get() ? p->countInputs() : 0, l);
313 l->append(")"); 319 l->append(")");
314 } 320 }
315 321
316 void ParamTraits<cc::RenderPass>::Write(base::Pickle* m, const param_type& p) { 322 void ParamTraits<cc::RenderPass>::Write(base::Pickle* m, const param_type& p) {
317 WriteParam(m, p.id); 323 WriteParam(m, p.id);
318 WriteParam(m, p.output_rect); 324 WriteParam(m, p.output_rect);
319 WriteParam(m, p.damage_rect); 325 WriteParam(m, p.damage_rect);
320 WriteParam(m, p.transform_to_root_target); 326 WriteParam(m, p.transform_to_root_target);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 bool has_transparent_background; 431 bool has_transparent_background;
426 uint32_t quad_list_size; 432 uint32_t quad_list_size;
427 433
428 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) || 434 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) ||
429 !ReadParam(m, iter, &damage_rect) || 435 !ReadParam(m, iter, &damage_rect) ||
430 !ReadParam(m, iter, &transform_to_root_target) || 436 !ReadParam(m, iter, &transform_to_root_target) ||
431 !ReadParam(m, iter, &has_transparent_background) || 437 !ReadParam(m, iter, &has_transparent_background) ||
432 !ReadParam(m, iter, &quad_list_size)) 438 !ReadParam(m, iter, &quad_list_size))
433 return false; 439 return false;
434 440
435 p->SetAll(id, 441 p->SetAll(id, output_rect, damage_rect, transform_to_root_target,
436 output_rect,
437 damage_rect,
438 transform_to_root_target,
439 has_transparent_background); 442 has_transparent_background);
440 443
441 for (uint32_t i = 0; i < quad_list_size; ++i) { 444 for (uint32_t i = 0; i < quad_list_size; ++i) {
442 cc::DrawQuad::Material material; 445 cc::DrawQuad::Material material;
443 base::PickleIterator temp_iter = *iter; 446 base::PickleIterator temp_iter = *iter;
444 if (!ReadParam(m, &temp_iter, &material)) 447 if (!ReadParam(m, &temp_iter, &material))
445 return false; 448 return false;
446 449
447 cc::DrawQuad* draw_quad = NULL; 450 cc::DrawQuad* draw_quad = NULL;
448 switch (material) { 451 switch (material) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 if (!ReadParam(m, iter, state)) 508 if (!ReadParam(m, iter, state))
506 return false; 509 return false;
507 } 510 }
508 511
509 draw_quad->shared_quad_state = p->shared_quad_state_list.back(); 512 draw_quad->shared_quad_state = p->shared_quad_state_list.back();
510 } 513 }
511 514
512 return true; 515 return true;
513 } 516 }
514 517
515 void ParamTraits<cc::RenderPass>::Log( 518 void ParamTraits<cc::RenderPass>::Log(const param_type& p, std::string* l) {
516 const param_type& p, std::string* l) {
517 l->append("RenderPass(("); 519 l->append("RenderPass((");
518 LogParam(p.id, l); 520 LogParam(p.id, l);
519 l->append("), "); 521 l->append("), ");
520 LogParam(p.output_rect, l); 522 LogParam(p.output_rect, l);
521 l->append(", "); 523 l->append(", ");
522 LogParam(p.damage_rect, l); 524 LogParam(p.damage_rect, l);
523 l->append(", "); 525 l->append(", ");
524 LogParam(p.transform_to_root_target, l); 526 LogParam(p.transform_to_root_target, l);
525 l->append(", "); 527 l->append(", ");
526 LogParam(p.has_transparent_background, l); 528 LogParam(p.has_transparent_background, l);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 LogParam(*cc::YUVVideoDrawQuad::MaterialCast(quad), l); 570 LogParam(*cc::YUVVideoDrawQuad::MaterialCast(quad), l);
569 break; 571 break;
570 case cc::DrawQuad::INVALID: 572 case cc::DrawQuad::INVALID:
571 break; 573 break;
572 } 574 }
573 } 575 }
574 l->append("])"); 576 l->append("])");
575 } 577 }
576 578
577 namespace { 579 namespace {
578 enum CompositorFrameType { 580 enum CompositorFrameType {
579 NO_FRAME, 581 NO_FRAME,
580 DELEGATED_FRAME, 582 DELEGATED_FRAME,
581 GL_FRAME, 583 GL_FRAME,
582 }; 584 };
583 } 585 }
584 586
585 void ParamTraits<cc::CompositorFrame>::Write(base::Pickle* m, 587 void ParamTraits<cc::CompositorFrame>::Write(base::Pickle* m,
586 const param_type& p) { 588 const param_type& p) {
587 WriteParam(m, p.metadata); 589 WriteParam(m, p.metadata);
588 if (p.delegated_frame_data) { 590 if (p.delegated_frame_data) {
589 DCHECK(!p.gl_frame_data); 591 DCHECK(!p.gl_frame_data);
590 WriteParam(m, static_cast<int>(DELEGATED_FRAME)); 592 WriteParam(m, static_cast<int>(DELEGATED_FRAME));
591 WriteParam(m, *p.delegated_frame_data); 593 WriteParam(m, *p.delegated_frame_data);
592 } else if (p.gl_frame_data) { 594 } else if (p.gl_frame_data) {
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 to_reserve += sizeof(size_t) * 2; 695 to_reserve += sizeof(size_t) * 2;
694 to_reserve += ReserveSizeForRenderPassWrite(*pass); 696 to_reserve += ReserveSizeForRenderPassWrite(*pass);
695 } 697 }
696 m->Reserve(to_reserve); 698 m->Reserve(to_reserve);
697 699
698 WriteParam(m, p.device_scale_factor); 700 WriteParam(m, p.device_scale_factor);
699 WriteParam(m, p.resource_list); 701 WriteParam(m, p.resource_list);
700 WriteParam(m, base::checked_cast<uint32_t>(p.render_pass_list.size())); 702 WriteParam(m, base::checked_cast<uint32_t>(p.render_pass_list.size()));
701 for (const auto& pass : p.render_pass_list) { 703 for (const auto& pass : p.render_pass_list) {
702 WriteParam(m, base::checked_cast<uint32_t>(pass->quad_list.size())); 704 WriteParam(m, base::checked_cast<uint32_t>(pass->quad_list.size()));
703 WriteParam(m, base::checked_cast<uint32_t>( 705 WriteParam(
704 pass->shared_quad_state_list.size())); 706 m, base::checked_cast<uint32_t>(pass->shared_quad_state_list.size()));
705 WriteParam(m, *pass); 707 WriteParam(m, *pass);
706 } 708 }
707 } 709 }
708 710
709 bool ParamTraits<cc::DelegatedFrameData>::Read(const base::Pickle* m, 711 bool ParamTraits<cc::DelegatedFrameData>::Read(const base::Pickle* m,
710 base::PickleIterator* iter, 712 base::PickleIterator* iter,
711 param_type* p) { 713 param_type* p) {
714 const size_t kMaxRenderPasses = 10000;
715 const size_t kMaxSharedQuadStateListSize = 100000;
716 const size_t kMaxQuadListSize = 1000000;
717
712 if (!ReadParam(m, iter, &p->device_scale_factor)) 718 if (!ReadParam(m, iter, &p->device_scale_factor))
713 return false; 719 return false;
714 720
715 const static size_t kMaxRenderPasses = 10000;
716 const static size_t kMaxSharedQuadStateListSize = 100000;
717 const static size_t kMaxQuadListSize = 1000000;
718
719 std::set<cc::RenderPassId> pass_set; 721 std::set<cc::RenderPassId> pass_set;
720 722
721 uint32_t num_render_passes; 723 uint32_t num_render_passes;
722 if (!ReadParam(m, iter, &p->resource_list) || 724 if (!ReadParam(m, iter, &p->resource_list) ||
723 !ReadParam(m, iter, &num_render_passes) || 725 !ReadParam(m, iter, &num_render_passes) ||
724 num_render_passes > kMaxRenderPasses || num_render_passes == 0) 726 num_render_passes > kMaxRenderPasses || num_render_passes == 0)
725 return false; 727 return false;
726 for (uint32_t i = 0; i < num_render_passes; ++i) { 728 for (uint32_t i = 0; i < num_render_passes; ++i) {
727 uint32_t quad_list_size; 729 uint32_t quad_list_size;
728 uint32_t shared_quad_state_list_size; 730 uint32_t shared_quad_state_list_size;
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 809
808 for (size_t i = 0; i < p.count; ++i) { 810 for (size_t i = 0; i < p.count; ++i) {
809 LogParam(p.ids[i], l); 811 LogParam(p.ids[i], l);
810 if (i < (p.count - 1)) 812 if (i < (p.count - 1))
811 l->append(", "); 813 l->append(", ");
812 } 814 }
813 l->append("])"); 815 l->append("])");
814 } 816 }
815 817
816 void ParamTraits<cc::StreamVideoDrawQuad::OverlayResources>::GetSize( 818 void ParamTraits<cc::StreamVideoDrawQuad::OverlayResources>::GetSize(
817 base::PickleSizer* s, const param_type& p) { 819 base::PickleSizer* s,
820 const param_type& p) {
818 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { 821 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) {
819 GetParamSize(s, p.size_in_pixels[i]); 822 GetParamSize(s, p.size_in_pixels[i]);
820 } 823 }
821 } 824 }
822 825
823 void ParamTraits<cc::StreamVideoDrawQuad::OverlayResources>::Write( 826 void ParamTraits<cc::StreamVideoDrawQuad::OverlayResources>::Write(
824 base::Pickle* m, 827 base::Pickle* m,
825 const param_type& p) { 828 const param_type& p) {
826 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { 829 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) {
827 WriteParam(m, p.size_in_pixels[i]); 830 WriteParam(m, p.size_in_pixels[i]);
(...skipping 17 matching lines...) Expand all
845 l->append("StreamVideoDrawQuad::OverlayResources(["); 848 l->append("StreamVideoDrawQuad::OverlayResources([");
846 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { 849 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) {
847 LogParam(p.size_in_pixels[i], l); 850 LogParam(p.size_in_pixels[i], l);
848 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1)) 851 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1))
849 l->append(", "); 852 l->append(", ");
850 } 853 }
851 l->append("])"); 854 l->append("])");
852 } 855 }
853 856
854 void ParamTraits<cc::TextureDrawQuad::OverlayResources>::GetSize( 857 void ParamTraits<cc::TextureDrawQuad::OverlayResources>::GetSize(
855 base::PickleSizer* s, const param_type& p) { 858 base::PickleSizer* s,
859 const param_type& p) {
856 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { 860 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) {
857 GetParamSize(s, p.size_in_pixels[i]); 861 GetParamSize(s, p.size_in_pixels[i]);
858 } 862 }
859 } 863 }
860 864
861 void ParamTraits<cc::TextureDrawQuad::OverlayResources>::Write( 865 void ParamTraits<cc::TextureDrawQuad::OverlayResources>::Write(
862 base::Pickle* m, 866 base::Pickle* m,
863 const param_type& p) { 867 const param_type& p) {
864 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { 868 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) {
865 WriteParam(m, p.size_in_pixels[i]); 869 WriteParam(m, p.size_in_pixels[i]);
(...skipping 17 matching lines...) Expand all
883 l->append("TextureDrawQuad::OverlayResources(["); 887 l->append("TextureDrawQuad::OverlayResources([");
884 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { 888 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) {
885 LogParam(p.size_in_pixels[i], l); 889 LogParam(p.size_in_pixels[i], l);
886 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1)) 890 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1))
887 l->append(", "); 891 l->append(", ");
888 } 892 }
889 l->append("])"); 893 l->append("])");
890 } 894 }
891 895
892 } // namespace IPC 896 } // namespace IPC
897
898 // Generate param traits size methods.
899 #include "ipc/param_traits_size_macros.h"
900 namespace IPC {
901 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_
902 #include "cc/ipc/cc_param_traits_macros.h"
903 }
904
905 // Generate param traits write methods.
906 #include "ipc/param_traits_write_macros.h"
907 namespace IPC {
908 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_
909 #include "cc/ipc/cc_param_traits_macros.h"
910 } // namespace IPC
911
912 // Generate param traits read methods.
913 #include "ipc/param_traits_read_macros.h"
914 namespace IPC {
915 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_
916 #include "cc/ipc/cc_param_traits_macros.h"
917 } // namespace IPC
918
919 // Generate param traits log methods.
920 #include "ipc/param_traits_log_macros.h"
921 namespace IPC {
922 #undef CC_IPC_CC_PARAM_TRAITS_MACROS_H_
923 #include "cc/ipc/cc_param_traits_macros.h"
924 } // namespace IPC
OLDNEW
« no previous file with comments | « cc/ipc/cc_param_traits.h ('k') | cc/ipc/cc_param_traits_macros.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698