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 <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "cc/output/compositor_frame.h" | 10 #include "cc/output/compositor_frame.h" |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
179 break; | 179 break; |
180 case cc::FilterOperation::ALPHA_THRESHOLD: | 180 case cc::FilterOperation::ALPHA_THRESHOLD: |
181 NOTREACHED(); | 181 NOTREACHED(); |
182 break; | 182 break; |
183 } | 183 } |
184 l->append(")"); | 184 l->append(")"); |
185 } | 185 } |
186 | 186 |
187 void ParamTraits<cc::FilterOperations>::Write(base::Pickle* m, | 187 void ParamTraits<cc::FilterOperations>::Write(base::Pickle* m, |
188 const param_type& p) { | 188 const param_type& p) { |
189 WriteParam(m, p.size()); | 189 WriteParam(m, static_cast<uint32_t>(p.size())); |
190 for (std::size_t i = 0; i < p.size(); ++i) { | 190 for (std::size_t i = 0; i < p.size(); ++i) { |
Tom Sepez
2016/02/08 17:32:09
Should this get truncated, we'd write more items i
jam
2016/02/08 17:49:53
Done.
| |
191 WriteParam(m, p.at(i)); | 191 WriteParam(m, p.at(i)); |
192 } | 192 } |
193 } | 193 } |
194 | 194 |
195 bool ParamTraits<cc::FilterOperations>::Read(const base::Pickle* m, | 195 bool ParamTraits<cc::FilterOperations>::Read(const base::Pickle* m, |
196 base::PickleIterator* iter, | 196 base::PickleIterator* iter, |
197 param_type* r) { | 197 param_type* r) { |
198 size_t count; | 198 uint32_t count; |
199 if (!ReadParam(m, iter, &count)) | 199 if (!ReadParam(m, iter, &count)) |
200 return false; | 200 return false; |
201 | 201 |
202 for (std::size_t i = 0; i < count; ++i) { | 202 for (std::size_t i = 0; i < count; ++i) { |
203 cc::FilterOperation op = cc::FilterOperation::CreateEmptyFilter(); | 203 cc::FilterOperation op = cc::FilterOperation::CreateEmptyFilter(); |
204 if (!ReadParam(m, iter, &op)) | 204 if (!ReadParam(m, iter, &op)) |
205 return false; | 205 return false; |
206 r->Append(op); | 206 r->Append(op); |
207 } | 207 } |
208 return true; | 208 return true; |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
294 } | 294 } |
295 l->append(") "); | 295 l->append(") "); |
296 } | 296 } |
297 | 297 |
298 void ParamTraits<cc::RenderPass>::Write(base::Pickle* m, const param_type& p) { | 298 void ParamTraits<cc::RenderPass>::Write(base::Pickle* m, const param_type& p) { |
299 WriteParam(m, p.id); | 299 WriteParam(m, p.id); |
300 WriteParam(m, p.output_rect); | 300 WriteParam(m, p.output_rect); |
301 WriteParam(m, p.damage_rect); | 301 WriteParam(m, p.damage_rect); |
302 WriteParam(m, p.transform_to_root_target); | 302 WriteParam(m, p.transform_to_root_target); |
303 WriteParam(m, p.has_transparent_background); | 303 WriteParam(m, p.has_transparent_background); |
304 WriteParam(m, p.quad_list.size()); | 304 WriteParam(m, static_cast<uint32_t>(p.quad_list.size())); |
305 | 305 |
306 cc::SharedQuadStateList::ConstIterator shared_quad_state_iter = | 306 cc::SharedQuadStateList::ConstIterator shared_quad_state_iter = |
307 p.shared_quad_state_list.begin(); | 307 p.shared_quad_state_list.begin(); |
308 cc::SharedQuadStateList::ConstIterator last_shared_quad_state_iter = | 308 cc::SharedQuadStateList::ConstIterator last_shared_quad_state_iter = |
309 p.shared_quad_state_list.end(); | 309 p.shared_quad_state_list.end(); |
310 for (const auto& quad : p.quad_list) { | 310 for (const auto& quad : p.quad_list) { |
Tom Sepez
2016/02/08 17:32:09
This has the same issue.
jam
2016/02/08 17:49:53
Done.
| |
311 DCHECK(quad->rect.Contains(quad->visible_rect)) | 311 DCHECK(quad->rect.Contains(quad->visible_rect)) |
312 << quad->material << " rect: " << quad->rect.ToString() | 312 << quad->material << " rect: " << quad->rect.ToString() |
313 << " visible_rect: " << quad->visible_rect.ToString(); | 313 << " visible_rect: " << quad->visible_rect.ToString(); |
314 DCHECK(quad->opaque_rect.IsEmpty() || | 314 DCHECK(quad->opaque_rect.IsEmpty() || |
315 quad->rect.Contains(quad->opaque_rect)) | 315 quad->rect.Contains(quad->opaque_rect)) |
316 << quad->material << " rect: " << quad->rect.ToString() | 316 << quad->material << " rect: " << quad->rect.ToString() |
317 << " opaque_rect: " << quad->opaque_rect.ToString(); | 317 << " opaque_rect: " << quad->opaque_rect.ToString(); |
318 | 318 |
319 switch (quad->material) { | 319 switch (quad->material) { |
320 case cc::DrawQuad::DEBUG_BORDER: | 320 case cc::DrawQuad::DEBUG_BORDER: |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
398 } | 398 } |
399 | 399 |
400 bool ParamTraits<cc::RenderPass>::Read(const base::Pickle* m, | 400 bool ParamTraits<cc::RenderPass>::Read(const base::Pickle* m, |
401 base::PickleIterator* iter, | 401 base::PickleIterator* iter, |
402 param_type* p) { | 402 param_type* p) { |
403 cc::RenderPassId id; | 403 cc::RenderPassId id; |
404 gfx::Rect output_rect; | 404 gfx::Rect output_rect; |
405 gfx::Rect damage_rect; | 405 gfx::Rect damage_rect; |
406 gfx::Transform transform_to_root_target; | 406 gfx::Transform transform_to_root_target; |
407 bool has_transparent_background; | 407 bool has_transparent_background; |
408 size_t quad_list_size; | 408 uint32_t quad_list_size; |
409 | 409 |
410 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) || | 410 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) || |
411 !ReadParam(m, iter, &damage_rect) || | 411 !ReadParam(m, iter, &damage_rect) || |
412 !ReadParam(m, iter, &transform_to_root_target) || | 412 !ReadParam(m, iter, &transform_to_root_target) || |
413 !ReadParam(m, iter, &has_transparent_background) || | 413 !ReadParam(m, iter, &has_transparent_background) || |
414 !ReadParam(m, iter, &quad_list_size)) | 414 !ReadParam(m, iter, &quad_list_size)) |
415 return false; | 415 return false; |
416 | 416 |
417 p->SetAll(id, | 417 p->SetAll(id, |
418 output_rect, | 418 output_rect, |
419 damage_rect, | 419 damage_rect, |
420 transform_to_root_target, | 420 transform_to_root_target, |
421 has_transparent_background); | 421 has_transparent_background); |
422 | 422 |
423 for (size_t i = 0; i < quad_list_size; ++i) { | 423 for (uint32_t i = 0; i < quad_list_size; ++i) { |
424 cc::DrawQuad::Material material; | 424 cc::DrawQuad::Material material; |
425 base::PickleIterator temp_iter = *iter; | 425 base::PickleIterator temp_iter = *iter; |
426 if (!ReadParam(m, &temp_iter, &material)) | 426 if (!ReadParam(m, &temp_iter, &material)) |
427 return false; | 427 return false; |
428 | 428 |
429 cc::DrawQuad* draw_quad = NULL; | 429 cc::DrawQuad* draw_quad = NULL; |
430 switch (material) { | 430 switch (material) { |
431 case cc::DrawQuad::DEBUG_BORDER: | 431 case cc::DrawQuad::DEBUG_BORDER: |
432 draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter, p); | 432 draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter, p); |
433 break; | 433 break; |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
672 size_t to_reserve = sizeof(p.device_scale_factor); | 672 size_t to_reserve = sizeof(p.device_scale_factor); |
673 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource); | 673 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource); |
674 for (const auto& pass : p.render_pass_list) { | 674 for (const auto& pass : p.render_pass_list) { |
675 to_reserve += sizeof(size_t) * 2; | 675 to_reserve += sizeof(size_t) * 2; |
676 to_reserve += ReserveSizeForRenderPassWrite(*pass); | 676 to_reserve += ReserveSizeForRenderPassWrite(*pass); |
677 } | 677 } |
678 m->Reserve(to_reserve); | 678 m->Reserve(to_reserve); |
679 | 679 |
680 WriteParam(m, p.device_scale_factor); | 680 WriteParam(m, p.device_scale_factor); |
681 WriteParam(m, p.resource_list); | 681 WriteParam(m, p.resource_list); |
682 WriteParam(m, p.render_pass_list.size()); | 682 WriteParam(m, static_cast<uint32_t>(p.render_pass_list.size())); |
683 for (const auto& pass : p.render_pass_list) { | 683 for (const auto& pass : p.render_pass_list) { |
684 WriteParam(m, pass->quad_list.size()); | 684 WriteParam(m, static_cast<uint32_t>(pass->quad_list.size())); |
685 WriteParam(m, pass->shared_quad_state_list.size()); | 685 WriteParam(m, static_cast<uint32_t>(pass->shared_quad_state_list.size())); |
686 WriteParam(m, *pass); | 686 WriteParam(m, *pass); |
687 } | 687 } |
688 } | 688 } |
689 | 689 |
690 bool ParamTraits<cc::DelegatedFrameData>::Read(const base::Pickle* m, | 690 bool ParamTraits<cc::DelegatedFrameData>::Read(const base::Pickle* m, |
691 base::PickleIterator* iter, | 691 base::PickleIterator* iter, |
692 param_type* p) { | 692 param_type* p) { |
693 if (!ReadParam(m, iter, &p->device_scale_factor)) | 693 if (!ReadParam(m, iter, &p->device_scale_factor)) |
694 return false; | 694 return false; |
695 | 695 |
696 const static size_t kMaxRenderPasses = 10000; | 696 const static size_t kMaxRenderPasses = 10000; |
697 const static size_t kMaxSharedQuadStateListSize = 100000; | 697 const static size_t kMaxSharedQuadStateListSize = 100000; |
698 const static size_t kMaxQuadListSize = 1000000; | 698 const static size_t kMaxQuadListSize = 1000000; |
699 | 699 |
700 std::set<cc::RenderPassId> pass_set; | 700 std::set<cc::RenderPassId> pass_set; |
701 | 701 |
702 size_t num_render_passes; | 702 uint32_t num_render_passes; |
703 if (!ReadParam(m, iter, &p->resource_list) || | 703 if (!ReadParam(m, iter, &p->resource_list) || |
704 !ReadParam(m, iter, &num_render_passes) || | 704 !ReadParam(m, iter, &num_render_passes) || |
705 num_render_passes > kMaxRenderPasses || num_render_passes == 0) | 705 num_render_passes > kMaxRenderPasses || num_render_passes == 0) |
706 return false; | 706 return false; |
707 for (size_t i = 0; i < num_render_passes; ++i) { | 707 for (uint32_t i = 0; i < num_render_passes; ++i) { |
708 size_t quad_list_size; | 708 uint32_t quad_list_size; |
709 size_t shared_quad_state_list_size; | 709 uint32_t shared_quad_state_list_size; |
710 if (!ReadParam(m, iter, &quad_list_size) || | 710 if (!ReadParam(m, iter, &quad_list_size) || |
711 !ReadParam(m, iter, &shared_quad_state_list_size) || | 711 !ReadParam(m, iter, &shared_quad_state_list_size) || |
712 quad_list_size > kMaxQuadListSize || | 712 quad_list_size > kMaxQuadListSize || |
713 shared_quad_state_list_size > kMaxSharedQuadStateListSize) | 713 shared_quad_state_list_size > kMaxSharedQuadStateListSize) |
714 return false; | 714 return false; |
715 scoped_ptr<cc::RenderPass> render_pass = | 715 scoped_ptr<cc::RenderPass> render_pass = |
716 cc::RenderPass::Create(shared_quad_state_list_size, quad_list_size); | 716 cc::RenderPass::Create( |
717 static_cast<size_t>(shared_quad_state_list_size), | |
718 static_cast<size_t>(quad_list_size)); | |
717 if (!ReadParam(m, iter, render_pass.get())) | 719 if (!ReadParam(m, iter, render_pass.get())) |
718 return false; | 720 return false; |
719 // Validate that each RenderPassDrawQuad points at a valid RenderPass | 721 // Validate that each RenderPassDrawQuad points at a valid RenderPass |
720 // earlier in the frame. | 722 // earlier in the frame. |
721 for (const auto* quad : render_pass->quad_list) { | 723 for (const auto* quad : render_pass->quad_list) { |
722 if (quad->material != cc::DrawQuad::RENDER_PASS) | 724 if (quad->material != cc::DrawQuad::RENDER_PASS) |
723 continue; | 725 continue; |
724 const cc::RenderPassDrawQuad* rpdq = | 726 const cc::RenderPassDrawQuad* rpdq = |
725 cc::RenderPassDrawQuad::MaterialCast(quad); | 727 cc::RenderPassDrawQuad::MaterialCast(quad); |
726 if (!pass_set.count(rpdq->render_pass_id)) | 728 if (!pass_set.count(rpdq->render_pass_id)) |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
842 l->append("TextureDrawQuad::OverlayResources(["); | 844 l->append("TextureDrawQuad::OverlayResources(["); |
843 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { | 845 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { |
844 LogParam(p.size_in_pixels[i], l); | 846 LogParam(p.size_in_pixels[i], l); |
845 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1)) | 847 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1)) |
846 l->append(", "); | 848 l->append(", "); |
847 } | 849 } |
848 l->append("])"); | 850 l->append("])"); |
849 } | 851 } |
850 | 852 |
851 } // namespace IPC | 853 } // namespace IPC |
OLD | NEW |