OLD | NEW |
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 "content/common/cc_messages.h" |
6 | 6 |
7 #include "cc/output/compositor_frame.h" | 7 #include "cc/output/compositor_frame.h" |
8 #include "cc/output/filter_operations.h" | 8 #include "cc/output/filter_operations.h" |
9 #include "cc/quads/largest_draw_quad.h" | 9 #include "cc/quads/largest_draw_quad.h" |
10 #include "cc/quads/render_pass_id.h" | 10 #include "cc/quads/render_pass_id.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 break; | 46 break; |
47 case cc::FilterOperation::REFERENCE: | 47 case cc::FilterOperation::REFERENCE: |
48 WriteParam(m, p.image_filter()); | 48 WriteParam(m, p.image_filter()); |
49 break; | 49 break; |
50 case cc::FilterOperation::ALPHA_THRESHOLD: | 50 case cc::FilterOperation::ALPHA_THRESHOLD: |
51 NOTREACHED(); | 51 NOTREACHED(); |
52 break; | 52 break; |
53 } | 53 } |
54 } | 54 } |
55 | 55 |
56 bool ParamTraits<cc::FilterOperation>::Read( | 56 bool ParamTraits<cc::FilterOperation>::Read(const Message* m, |
57 const Message* m, PickleIterator* iter, param_type* r) { | 57 base::PickleIterator* iter, |
| 58 param_type* r) { |
58 cc::FilterOperation::FilterType type; | 59 cc::FilterOperation::FilterType type; |
59 float amount; | 60 float amount; |
60 gfx::Point drop_shadow_offset; | 61 gfx::Point drop_shadow_offset; |
61 SkColor drop_shadow_color; | 62 SkColor drop_shadow_color; |
62 SkScalar matrix[20]; | 63 SkScalar matrix[20]; |
63 int zoom_inset; | 64 int zoom_inset; |
64 | 65 |
65 if (!ReadParam(m, iter, &type)) | 66 if (!ReadParam(m, iter, &type)) |
66 return false; | 67 return false; |
67 r->set_type(type); | 68 r->set_type(type); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 } | 181 } |
181 | 182 |
182 void ParamTraits<cc::FilterOperations>::Write( | 183 void ParamTraits<cc::FilterOperations>::Write( |
183 Message* m, const param_type& p) { | 184 Message* m, const param_type& p) { |
184 WriteParam(m, p.size()); | 185 WriteParam(m, p.size()); |
185 for (std::size_t i = 0; i < p.size(); ++i) { | 186 for (std::size_t i = 0; i < p.size(); ++i) { |
186 WriteParam(m, p.at(i)); | 187 WriteParam(m, p.at(i)); |
187 } | 188 } |
188 } | 189 } |
189 | 190 |
190 bool ParamTraits<cc::FilterOperations>::Read( | 191 bool ParamTraits<cc::FilterOperations>::Read(const Message* m, |
191 const Message* m, PickleIterator* iter, param_type* r) { | 192 base::PickleIterator* iter, |
| 193 param_type* r) { |
192 size_t count; | 194 size_t count; |
193 if (!ReadParam(m, iter, &count)) | 195 if (!ReadParam(m, iter, &count)) |
194 return false; | 196 return false; |
195 | 197 |
196 for (std::size_t i = 0; i < count; ++i) { | 198 for (std::size_t i = 0; i < count; ++i) { |
197 cc::FilterOperation op = cc::FilterOperation::CreateEmptyFilter(); | 199 cc::FilterOperation op = cc::FilterOperation::CreateEmptyFilter(); |
198 if (!ReadParam(m, iter, &op)) | 200 if (!ReadParam(m, iter, &op)) |
199 return false; | 201 return false; |
200 r->Append(op); | 202 r->Append(op); |
201 } | 203 } |
(...skipping 16 matching lines...) Expand all Loading... |
218 SkImageFilter* filter = p.get(); | 220 SkImageFilter* filter = p.get(); |
219 if (filter) { | 221 if (filter) { |
220 skia::RefPtr<SkData> data = | 222 skia::RefPtr<SkData> data = |
221 skia::AdoptRef(SkValidatingSerializeFlattenable(filter)); | 223 skia::AdoptRef(SkValidatingSerializeFlattenable(filter)); |
222 m->WriteData(static_cast<const char*>(data->data()), data->size()); | 224 m->WriteData(static_cast<const char*>(data->data()), data->size()); |
223 } else { | 225 } else { |
224 m->WriteData(0, 0); | 226 m->WriteData(0, 0); |
225 } | 227 } |
226 } | 228 } |
227 | 229 |
228 bool ParamTraits<skia::RefPtr<SkImageFilter> >::Read( | 230 bool ParamTraits<skia::RefPtr<SkImageFilter>>::Read(const Message* m, |
229 const Message* m, PickleIterator* iter, param_type* r) { | 231 base::PickleIterator* iter, |
| 232 param_type* r) { |
230 const char* data = 0; | 233 const char* data = 0; |
231 int length = 0; | 234 int length = 0; |
232 if (!iter->ReadData(&data, &length)) | 235 if (!iter->ReadData(&data, &length)) |
233 return false; | 236 return false; |
234 if (length > 0) { | 237 if (length > 0) { |
235 SkFlattenable* flattenable = SkValidatingDeserializeFlattenable( | 238 SkFlattenable* flattenable = SkValidatingDeserializeFlattenable( |
236 data, length, SkImageFilter::GetFlattenableType()); | 239 data, length, SkImageFilter::GetFlattenableType()); |
237 *r = skia::AdoptRef(static_cast<SkImageFilter*>(flattenable)); | 240 *r = skia::AdoptRef(static_cast<SkImageFilter*>(flattenable)); |
238 } else { | 241 } else { |
239 r->clear(); | 242 r->clear(); |
(...skipping 13 matching lines...) Expand all Loading... |
253 #ifdef SK_MSCALAR_IS_FLOAT | 256 #ifdef SK_MSCALAR_IS_FLOAT |
254 float column_major_data[16]; | 257 float column_major_data[16]; |
255 p.matrix().asColMajorf(column_major_data); | 258 p.matrix().asColMajorf(column_major_data); |
256 #else | 259 #else |
257 double column_major_data[16]; | 260 double column_major_data[16]; |
258 p.matrix().asColMajord(column_major_data); | 261 p.matrix().asColMajord(column_major_data); |
259 #endif | 262 #endif |
260 m->WriteBytes(&column_major_data, sizeof(SkMScalar) * 16); | 263 m->WriteBytes(&column_major_data, sizeof(SkMScalar) * 16); |
261 } | 264 } |
262 | 265 |
263 bool ParamTraits<gfx::Transform>::Read( | 266 bool ParamTraits<gfx::Transform>::Read(const Message* m, |
264 const Message* m, PickleIterator* iter, param_type* r) { | 267 base::PickleIterator* iter, |
| 268 param_type* r) { |
265 const char* column_major_data; | 269 const char* column_major_data; |
266 if (!iter->ReadBytes(&column_major_data, sizeof(SkMScalar) * 16)) | 270 if (!iter->ReadBytes(&column_major_data, sizeof(SkMScalar) * 16)) |
267 return false; | 271 return false; |
268 r->matrix().setColMajor( | 272 r->matrix().setColMajor( |
269 reinterpret_cast<const SkMScalar*>(column_major_data)); | 273 reinterpret_cast<const SkMScalar*>(column_major_data)); |
270 return true; | 274 return true; |
271 } | 275 } |
272 | 276 |
273 void ParamTraits<gfx::Transform>::Log( | 277 void ParamTraits<gfx::Transform>::Log( |
274 const param_type& p, std::string* l) { | 278 const param_type& p, std::string* l) { |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 // that has not been written. | 383 // that has not been written. |
380 to_reserve += p.shared_quad_state_list.size() * sizeof(cc::SharedQuadState); | 384 to_reserve += p.shared_quad_state_list.size() * sizeof(cc::SharedQuadState); |
381 | 385 |
382 // The largest quad type, verified by a unit test. | 386 // The largest quad type, verified by a unit test. |
383 to_reserve += p.quad_list.size() * cc::LargestDrawQuadSize(); | 387 to_reserve += p.quad_list.size() * cc::LargestDrawQuadSize(); |
384 return to_reserve; | 388 return to_reserve; |
385 } | 389 } |
386 | 390 |
387 template <typename QuadType> | 391 template <typename QuadType> |
388 static cc::DrawQuad* ReadDrawQuad(const Message* m, | 392 static cc::DrawQuad* ReadDrawQuad(const Message* m, |
389 PickleIterator* iter, | 393 base::PickleIterator* iter, |
390 cc::RenderPass* render_pass) { | 394 cc::RenderPass* render_pass) { |
391 QuadType* quad = render_pass->CreateAndAppendDrawQuad<QuadType>(); | 395 QuadType* quad = render_pass->CreateAndAppendDrawQuad<QuadType>(); |
392 if (!ReadParam(m, iter, quad)) | 396 if (!ReadParam(m, iter, quad)) |
393 return NULL; | 397 return NULL; |
394 return quad; | 398 return quad; |
395 } | 399 } |
396 | 400 |
397 bool ParamTraits<cc::RenderPass>::Read( | 401 bool ParamTraits<cc::RenderPass>::Read(const Message* m, |
398 const Message* m, PickleIterator* iter, param_type* p) { | 402 base::PickleIterator* iter, |
| 403 param_type* p) { |
399 cc::RenderPassId id(-1, -1); | 404 cc::RenderPassId id(-1, -1); |
400 gfx::Rect output_rect; | 405 gfx::Rect output_rect; |
401 gfx::Rect damage_rect; | 406 gfx::Rect damage_rect; |
402 gfx::Transform transform_to_root_target; | 407 gfx::Transform transform_to_root_target; |
403 bool has_transparent_background; | 408 bool has_transparent_background; |
404 size_t quad_list_size; | 409 size_t quad_list_size; |
405 | 410 |
406 if (!ReadParam(m, iter, &id) || | 411 if (!ReadParam(m, iter, &id) || |
407 !ReadParam(m, iter, &output_rect) || | 412 !ReadParam(m, iter, &output_rect) || |
408 !ReadParam(m, iter, &damage_rect) || | 413 !ReadParam(m, iter, &damage_rect) || |
409 !ReadParam(m, iter, &transform_to_root_target) || | 414 !ReadParam(m, iter, &transform_to_root_target) || |
410 !ReadParam(m, iter, &has_transparent_background) || | 415 !ReadParam(m, iter, &has_transparent_background) || |
411 !ReadParam(m, iter, &quad_list_size)) | 416 !ReadParam(m, iter, &quad_list_size)) |
412 return false; | 417 return false; |
413 | 418 |
414 p->SetAll(id, | 419 p->SetAll(id, |
415 output_rect, | 420 output_rect, |
416 damage_rect, | 421 damage_rect, |
417 transform_to_root_target, | 422 transform_to_root_target, |
418 has_transparent_background); | 423 has_transparent_background); |
419 | 424 |
420 for (size_t i = 0; i < quad_list_size; ++i) { | 425 for (size_t i = 0; i < quad_list_size; ++i) { |
421 cc::DrawQuad::Material material; | 426 cc::DrawQuad::Material material; |
422 PickleIterator temp_iter = *iter; | 427 base::PickleIterator temp_iter = *iter; |
423 if (!ReadParam(m, &temp_iter, &material)) | 428 if (!ReadParam(m, &temp_iter, &material)) |
424 return false; | 429 return false; |
425 | 430 |
426 cc::DrawQuad* draw_quad = NULL; | 431 cc::DrawQuad* draw_quad = NULL; |
427 switch (material) { | 432 switch (material) { |
428 case cc::DrawQuad::CHECKERBOARD: | 433 case cc::DrawQuad::CHECKERBOARD: |
429 draw_quad = ReadDrawQuad<cc::CheckerboardDrawQuad>(m, iter, p); | 434 draw_quad = ReadDrawQuad<cc::CheckerboardDrawQuad>(m, iter, p); |
430 break; | 435 break; |
431 case cc::DrawQuad::DEBUG_BORDER: | 436 case cc::DrawQuad::DEBUG_BORDER: |
432 draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter, p); | 437 draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter, p); |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
582 WriteParam(m, *p.gl_frame_data); | 587 WriteParam(m, *p.gl_frame_data); |
583 } else if (p.software_frame_data) { | 588 } else if (p.software_frame_data) { |
584 WriteParam(m, static_cast<int>(SOFTWARE_FRAME)); | 589 WriteParam(m, static_cast<int>(SOFTWARE_FRAME)); |
585 WriteParam(m, *p.software_frame_data); | 590 WriteParam(m, *p.software_frame_data); |
586 } else { | 591 } else { |
587 WriteParam(m, static_cast<int>(NO_FRAME)); | 592 WriteParam(m, static_cast<int>(NO_FRAME)); |
588 } | 593 } |
589 } | 594 } |
590 | 595 |
591 bool ParamTraits<cc::CompositorFrame>::Read(const Message* m, | 596 bool ParamTraits<cc::CompositorFrame>::Read(const Message* m, |
592 PickleIterator* iter, | 597 base::PickleIterator* iter, |
593 param_type* p) { | 598 param_type* p) { |
594 if (!ReadParam(m, iter, &p->metadata)) | 599 if (!ReadParam(m, iter, &p->metadata)) |
595 return false; | 600 return false; |
596 | 601 |
597 int compositor_frame_type; | 602 int compositor_frame_type; |
598 if (!ReadParam(m, iter, &compositor_frame_type)) | 603 if (!ReadParam(m, iter, &compositor_frame_type)) |
599 return false; | 604 return false; |
600 | 605 |
601 switch (compositor_frame_type) { | 606 switch (compositor_frame_type) { |
602 case DELEGATED_FRAME: | 607 case DELEGATED_FRAME: |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
642 WriteParam(m, p.last_software_frame_id); | 647 WriteParam(m, p.last_software_frame_id); |
643 if (p.gl_frame_data) { | 648 if (p.gl_frame_data) { |
644 WriteParam(m, static_cast<int>(GL_FRAME)); | 649 WriteParam(m, static_cast<int>(GL_FRAME)); |
645 WriteParam(m, *p.gl_frame_data); | 650 WriteParam(m, *p.gl_frame_data); |
646 } else { | 651 } else { |
647 WriteParam(m, static_cast<int>(NO_FRAME)); | 652 WriteParam(m, static_cast<int>(NO_FRAME)); |
648 } | 653 } |
649 } | 654 } |
650 | 655 |
651 bool ParamTraits<cc::CompositorFrameAck>::Read(const Message* m, | 656 bool ParamTraits<cc::CompositorFrameAck>::Read(const Message* m, |
652 PickleIterator* iter, | 657 base::PickleIterator* iter, |
653 param_type* p) { | 658 param_type* p) { |
654 if (!ReadParam(m, iter, &p->resources)) | 659 if (!ReadParam(m, iter, &p->resources)) |
655 return false; | 660 return false; |
656 | 661 |
657 if (!ReadParam(m, iter, &p->last_software_frame_id)) | 662 if (!ReadParam(m, iter, &p->last_software_frame_id)) |
658 return false; | 663 return false; |
659 | 664 |
660 int compositor_frame_type; | 665 int compositor_frame_type; |
661 if (!ReadParam(m, iter, &compositor_frame_type)) | 666 if (!ReadParam(m, iter, &compositor_frame_type)) |
662 return false; | 667 return false; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
704 WriteParam(m, p.resource_list); | 709 WriteParam(m, p.resource_list); |
705 WriteParam(m, p.render_pass_list.size()); | 710 WriteParam(m, p.render_pass_list.size()); |
706 for (const auto* pass : p.render_pass_list) { | 711 for (const auto* pass : p.render_pass_list) { |
707 WriteParam(m, pass->quad_list.size()); | 712 WriteParam(m, pass->quad_list.size()); |
708 WriteParam(m, pass->shared_quad_state_list.size()); | 713 WriteParam(m, pass->shared_quad_state_list.size()); |
709 WriteParam(m, *pass); | 714 WriteParam(m, *pass); |
710 } | 715 } |
711 } | 716 } |
712 | 717 |
713 bool ParamTraits<cc::DelegatedFrameData>::Read(const Message* m, | 718 bool ParamTraits<cc::DelegatedFrameData>::Read(const Message* m, |
714 PickleIterator* iter, | 719 base::PickleIterator* iter, |
715 param_type* p) { | 720 param_type* p) { |
716 if (!ReadParam(m, iter, &p->device_scale_factor)) | 721 if (!ReadParam(m, iter, &p->device_scale_factor)) |
717 return false; | 722 return false; |
718 | 723 |
719 const static size_t kMaxRenderPasses = 10000; | 724 const static size_t kMaxRenderPasses = 10000; |
720 const static size_t kMaxSharedQuadStateListSize = 100000; | 725 const static size_t kMaxSharedQuadStateListSize = 100000; |
721 const static size_t kMaxQuadListSize = 1000000; | 726 const static size_t kMaxQuadListSize = 1000000; |
722 | 727 |
723 std::set<cc::RenderPassId> pass_set; | 728 std::set<cc::RenderPassId> pass_set; |
724 | 729 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 DCHECK(cc::SharedBitmap::VerifySizeInBytes(p.size)); | 779 DCHECK(cc::SharedBitmap::VerifySizeInBytes(p.size)); |
775 | 780 |
776 m->Reserve(sizeof(cc::SoftwareFrameData)); | 781 m->Reserve(sizeof(cc::SoftwareFrameData)); |
777 WriteParam(m, p.id); | 782 WriteParam(m, p.id); |
778 WriteParam(m, p.size); | 783 WriteParam(m, p.size); |
779 WriteParam(m, p.damage_rect); | 784 WriteParam(m, p.damage_rect); |
780 WriteParam(m, p.bitmap_id); | 785 WriteParam(m, p.bitmap_id); |
781 } | 786 } |
782 | 787 |
783 bool ParamTraits<cc::SoftwareFrameData>::Read(const Message* m, | 788 bool ParamTraits<cc::SoftwareFrameData>::Read(const Message* m, |
784 PickleIterator* iter, | 789 base::PickleIterator* iter, |
785 param_type* p) { | 790 param_type* p) { |
786 if (!ReadParam(m, iter, &p->id)) | 791 if (!ReadParam(m, iter, &p->id)) |
787 return false; | 792 return false; |
788 if (!ReadParam(m, iter, &p->size) || | 793 if (!ReadParam(m, iter, &p->size) || |
789 !cc::SharedBitmap::VerifySizeInBytes(p->size)) | 794 !cc::SharedBitmap::VerifySizeInBytes(p->size)) |
790 return false; | 795 return false; |
791 if (!ReadParam(m, iter, &p->damage_rect)) | 796 if (!ReadParam(m, iter, &p->damage_rect)) |
792 return false; | 797 return false; |
793 if (!ReadParam(m, iter, &p->bitmap_id)) | 798 if (!ReadParam(m, iter, &p->bitmap_id)) |
794 return false; | 799 return false; |
795 return true; | 800 return true; |
796 } | 801 } |
797 | 802 |
798 void ParamTraits<cc::SoftwareFrameData>::Log(const param_type& p, | 803 void ParamTraits<cc::SoftwareFrameData>::Log(const param_type& p, |
799 std::string* l) { | 804 std::string* l) { |
800 l->append("SoftwareFrameData("); | 805 l->append("SoftwareFrameData("); |
801 LogParam(p.id, l); | 806 LogParam(p.id, l); |
802 l->append(", "); | 807 l->append(", "); |
803 LogParam(p.size, l); | 808 LogParam(p.size, l); |
804 l->append(", "); | 809 l->append(", "); |
805 LogParam(p.damage_rect, l); | 810 LogParam(p.damage_rect, l); |
806 l->append(", "); | 811 l->append(", "); |
807 LogParam(p.bitmap_id, l); | 812 LogParam(p.bitmap_id, l); |
808 l->append(")"); | 813 l->append(")"); |
809 } | 814 } |
810 | 815 |
811 } // namespace IPC | 816 } // namespace IPC |
OLD | NEW |