| 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( | 187 void ParamTraits<cc::FilterOperations>::Write( |
| 188 Message* m, const param_type& p) { | 188 Message* m, 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) { |
| 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 Message* m, | 195 bool ParamTraits<cc::FilterOperations>::Read(const Message* 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 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 l->append(") "); | 296 l->append(") "); |
| 297 } | 297 } |
| 298 | 298 |
| 299 void ParamTraits<cc::RenderPass>::Write( | 299 void ParamTraits<cc::RenderPass>::Write( |
| 300 Message* m, const param_type& p) { | 300 Message* m, const param_type& p) { |
| 301 WriteParam(m, p.id); | 301 WriteParam(m, p.id); |
| 302 WriteParam(m, p.output_rect); | 302 WriteParam(m, p.output_rect); |
| 303 WriteParam(m, p.damage_rect); | 303 WriteParam(m, p.damage_rect); |
| 304 WriteParam(m, p.transform_to_root_target); | 304 WriteParam(m, p.transform_to_root_target); |
| 305 WriteParam(m, p.has_transparent_background); | 305 WriteParam(m, p.has_transparent_background); |
| 306 WriteParam(m, p.quad_list.size()); | 306 WriteParam(m, static_cast<uint32_t>(p.quad_list.size())); |
| 307 | 307 |
| 308 cc::SharedQuadStateList::ConstIterator shared_quad_state_iter = | 308 cc::SharedQuadStateList::ConstIterator shared_quad_state_iter = |
| 309 p.shared_quad_state_list.begin(); | 309 p.shared_quad_state_list.begin(); |
| 310 cc::SharedQuadStateList::ConstIterator last_shared_quad_state_iter = | 310 cc::SharedQuadStateList::ConstIterator last_shared_quad_state_iter = |
| 311 p.shared_quad_state_list.end(); | 311 p.shared_quad_state_list.end(); |
| 312 for (const auto& quad : p.quad_list) { | 312 for (const auto& quad : p.quad_list) { |
| 313 DCHECK(quad->rect.Contains(quad->visible_rect)) | 313 DCHECK(quad->rect.Contains(quad->visible_rect)) |
| 314 << quad->material << " rect: " << quad->rect.ToString() | 314 << quad->material << " rect: " << quad->rect.ToString() |
| 315 << " visible_rect: " << quad->visible_rect.ToString(); | 315 << " visible_rect: " << quad->visible_rect.ToString(); |
| 316 DCHECK(quad->opaque_rect.IsEmpty() || | 316 DCHECK(quad->opaque_rect.IsEmpty() || |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 400 } | 400 } |
| 401 | 401 |
| 402 bool ParamTraits<cc::RenderPass>::Read(const Message* m, | 402 bool ParamTraits<cc::RenderPass>::Read(const Message* m, |
| 403 base::PickleIterator* iter, | 403 base::PickleIterator* iter, |
| 404 param_type* p) { | 404 param_type* p) { |
| 405 cc::RenderPassId id; | 405 cc::RenderPassId id; |
| 406 gfx::Rect output_rect; | 406 gfx::Rect output_rect; |
| 407 gfx::Rect damage_rect; | 407 gfx::Rect damage_rect; |
| 408 gfx::Transform transform_to_root_target; | 408 gfx::Transform transform_to_root_target; |
| 409 bool has_transparent_background; | 409 bool has_transparent_background; |
| 410 size_t quad_list_size; | 410 uint32_t quad_list_size; |
| 411 | 411 |
| 412 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) || | 412 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) || |
| 413 !ReadParam(m, iter, &damage_rect) || | 413 !ReadParam(m, iter, &damage_rect) || |
| 414 !ReadParam(m, iter, &transform_to_root_target) || | 414 !ReadParam(m, iter, &transform_to_root_target) || |
| 415 !ReadParam(m, iter, &has_transparent_background) || | 415 !ReadParam(m, iter, &has_transparent_background) || |
| 416 !ReadParam(m, iter, &quad_list_size)) | 416 !ReadParam(m, iter, &quad_list_size)) |
| 417 return false; | 417 return false; |
| 418 | 418 |
| 419 p->SetAll(id, | 419 p->SetAll(id, |
| 420 output_rect, | 420 output_rect, |
| 421 damage_rect, | 421 damage_rect, |
| 422 transform_to_root_target, | 422 transform_to_root_target, |
| 423 has_transparent_background); | 423 has_transparent_background); |
| 424 | 424 |
| 425 for (size_t i = 0; i < quad_list_size; ++i) { | 425 for (uint32_t i = 0; i < quad_list_size; ++i) { |
| 426 cc::DrawQuad::Material material; | 426 cc::DrawQuad::Material material; |
| 427 base::PickleIterator temp_iter = *iter; | 427 base::PickleIterator temp_iter = *iter; |
| 428 if (!ReadParam(m, &temp_iter, &material)) | 428 if (!ReadParam(m, &temp_iter, &material)) |
| 429 return false; | 429 return false; |
| 430 | 430 |
| 431 cc::DrawQuad* draw_quad = NULL; | 431 cc::DrawQuad* draw_quad = NULL; |
| 432 switch (material) { | 432 switch (material) { |
| 433 case cc::DrawQuad::DEBUG_BORDER: | 433 case cc::DrawQuad::DEBUG_BORDER: |
| 434 draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter, p); | 434 draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter, p); |
| 435 break; | 435 break; |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 size_t to_reserve = sizeof(p.device_scale_factor); | 674 size_t to_reserve = sizeof(p.device_scale_factor); |
| 675 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource); | 675 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource); |
| 676 for (const auto& pass : p.render_pass_list) { | 676 for (const auto& pass : p.render_pass_list) { |
| 677 to_reserve += sizeof(size_t) * 2; | 677 to_reserve += sizeof(size_t) * 2; |
| 678 to_reserve += ReserveSizeForRenderPassWrite(*pass); | 678 to_reserve += ReserveSizeForRenderPassWrite(*pass); |
| 679 } | 679 } |
| 680 m->Reserve(to_reserve); | 680 m->Reserve(to_reserve); |
| 681 | 681 |
| 682 WriteParam(m, p.device_scale_factor); | 682 WriteParam(m, p.device_scale_factor); |
| 683 WriteParam(m, p.resource_list); | 683 WriteParam(m, p.resource_list); |
| 684 WriteParam(m, p.render_pass_list.size()); | 684 WriteParam(m, static_cast<uint32_t>(p.render_pass_list.size())); |
| 685 for (const auto& pass : p.render_pass_list) { | 685 for (const auto& pass : p.render_pass_list) { |
| 686 WriteParam(m, pass->quad_list.size()); | 686 WriteParam(m, static_cast<uint32_t>(pass->quad_list.size())); |
| 687 WriteParam(m, pass->shared_quad_state_list.size()); | 687 WriteParam(m, static_cast<uint32_t>(pass->shared_quad_state_list.size())); |
| 688 WriteParam(m, *pass); | 688 WriteParam(m, *pass); |
| 689 } | 689 } |
| 690 } | 690 } |
| 691 | 691 |
| 692 bool ParamTraits<cc::DelegatedFrameData>::Read(const Message* m, | 692 bool ParamTraits<cc::DelegatedFrameData>::Read(const Message* m, |
| 693 base::PickleIterator* iter, | 693 base::PickleIterator* iter, |
| 694 param_type* p) { | 694 param_type* p) { |
| 695 if (!ReadParam(m, iter, &p->device_scale_factor)) | 695 if (!ReadParam(m, iter, &p->device_scale_factor)) |
| 696 return false; | 696 return false; |
| 697 | 697 |
| 698 const static size_t kMaxRenderPasses = 10000; | 698 const static size_t kMaxRenderPasses = 10000; |
| 699 const static size_t kMaxSharedQuadStateListSize = 100000; | 699 const static size_t kMaxSharedQuadStateListSize = 100000; |
| 700 const static size_t kMaxQuadListSize = 1000000; | 700 const static size_t kMaxQuadListSize = 1000000; |
| 701 | 701 |
| 702 std::set<cc::RenderPassId> pass_set; | 702 std::set<cc::RenderPassId> pass_set; |
| 703 | 703 |
| 704 size_t num_render_passes; | 704 uint32_t num_render_passes; |
| 705 if (!ReadParam(m, iter, &p->resource_list) || | 705 if (!ReadParam(m, iter, &p->resource_list) || |
| 706 !ReadParam(m, iter, &num_render_passes) || | 706 !ReadParam(m, iter, &num_render_passes) || |
| 707 num_render_passes > kMaxRenderPasses || num_render_passes == 0) | 707 num_render_passes > kMaxRenderPasses || num_render_passes == 0) |
| 708 return false; | 708 return false; |
| 709 for (size_t i = 0; i < num_render_passes; ++i) { | 709 for (uint32_t i = 0; i < num_render_passes; ++i) { |
| 710 size_t quad_list_size; | 710 uint32_t quad_list_size; |
| 711 size_t shared_quad_state_list_size; | 711 uint32_t shared_quad_state_list_size; |
| 712 if (!ReadParam(m, iter, &quad_list_size) || | 712 if (!ReadParam(m, iter, &quad_list_size) || |
| 713 !ReadParam(m, iter, &shared_quad_state_list_size) || | 713 !ReadParam(m, iter, &shared_quad_state_list_size) || |
| 714 quad_list_size > kMaxQuadListSize || | 714 quad_list_size > kMaxQuadListSize || |
| 715 shared_quad_state_list_size > kMaxSharedQuadStateListSize) | 715 shared_quad_state_list_size > kMaxSharedQuadStateListSize) |
| 716 return false; | 716 return false; |
| 717 scoped_ptr<cc::RenderPass> render_pass = | 717 scoped_ptr<cc::RenderPass> render_pass = |
| 718 cc::RenderPass::Create(shared_quad_state_list_size, quad_list_size); | 718 cc::RenderPass::Create( |
| 719 static_cast<size_t>(shared_quad_state_list_size), |
| 720 static_cast<size_t>(quad_list_size)); |
| 719 if (!ReadParam(m, iter, render_pass.get())) | 721 if (!ReadParam(m, iter, render_pass.get())) |
| 720 return false; | 722 return false; |
| 721 // Validate that each RenderPassDrawQuad points at a valid RenderPass | 723 // Validate that each RenderPassDrawQuad points at a valid RenderPass |
| 722 // earlier in the frame. | 724 // earlier in the frame. |
| 723 for (const auto* quad : render_pass->quad_list) { | 725 for (const auto* quad : render_pass->quad_list) { |
| 724 if (quad->material != cc::DrawQuad::RENDER_PASS) | 726 if (quad->material != cc::DrawQuad::RENDER_PASS) |
| 725 continue; | 727 continue; |
| 726 const cc::RenderPassDrawQuad* rpdq = | 728 const cc::RenderPassDrawQuad* rpdq = |
| 727 cc::RenderPassDrawQuad::MaterialCast(quad); | 729 cc::RenderPassDrawQuad::MaterialCast(quad); |
| 728 if (!pass_set.count(rpdq->render_pass_id)) | 730 if (!pass_set.count(rpdq->render_pass_id)) |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 844 l->append("TextureDrawQuad::OverlayResources(["); | 846 l->append("TextureDrawQuad::OverlayResources(["); |
| 845 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { | 847 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { |
| 846 LogParam(p.size_in_pixels[i], l); | 848 LogParam(p.size_in_pixels[i], l); |
| 847 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1)) | 849 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1)) |
| 848 l->append(", "); | 850 l->append(", "); |
| 849 } | 851 } |
| 850 l->append("])"); | 852 l->append("])"); |
| 851 } | 853 } |
| 852 | 854 |
| 853 } // namespace IPC | 855 } // namespace IPC |
| OLD | NEW |