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

Side by Side Diff: content/common/cc_messages.cc

Issue 1678623002: Switch cc::RenderPassId and cc::DrawQuad::Resources to use uint32_t instead of size_t. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments Created 4 years, 10 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/quads/render_pass_id.h ('k') | no next file » | 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 "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 "base/numerics/safe_conversions.h"
10 #include "cc/output/compositor_frame.h" 11 #include "cc/output/compositor_frame.h"
11 #include "cc/output/filter_operations.h" 12 #include "cc/output/filter_operations.h"
12 #include "cc/quads/draw_quad.h" 13 #include "cc/quads/draw_quad.h"
13 #include "cc/quads/largest_draw_quad.h" 14 #include "cc/quads/largest_draw_quad.h"
14 #include "cc/quads/render_pass_id.h" 15 #include "cc/quads/render_pass_id.h"
15 #include "content/public/common/common_param_traits.h" 16 #include "content/public/common/common_param_traits.h"
16 #include "third_party/skia/include/core/SkData.h" 17 #include "third_party/skia/include/core/SkData.h"
17 #include "third_party/skia/include/core/SkFlattenableSerialization.h" 18 #include "third_party/skia/include/core/SkFlattenableSerialization.h"
18 #include "ui/gfx/transform.h" 19 #include "ui/gfx/transform.h"
19 20
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 break; 180 break;
180 case cc::FilterOperation::ALPHA_THRESHOLD: 181 case cc::FilterOperation::ALPHA_THRESHOLD:
181 NOTREACHED(); 182 NOTREACHED();
182 break; 183 break;
183 } 184 }
184 l->append(")"); 185 l->append(")");
185 } 186 }
186 187
187 void ParamTraits<cc::FilterOperations>::Write(base::Pickle* m, 188 void ParamTraits<cc::FilterOperations>::Write(base::Pickle* m,
188 const param_type& p) { 189 const param_type& p) {
189 WriteParam(m, p.size()); 190 WriteParam(m, base::checked_cast<uint32_t>(p.size()));
190 for (std::size_t i = 0; i < p.size(); ++i) { 191 for (std::size_t i = 0; i < p.size(); ++i) {
191 WriteParam(m, p.at(i)); 192 WriteParam(m, p.at(i));
192 } 193 }
193 } 194 }
194 195
195 bool ParamTraits<cc::FilterOperations>::Read(const base::Pickle* m, 196 bool ParamTraits<cc::FilterOperations>::Read(const base::Pickle* m,
196 base::PickleIterator* iter, 197 base::PickleIterator* iter,
197 param_type* r) { 198 param_type* r) {
198 size_t count; 199 uint32_t count;
199 if (!ReadParam(m, iter, &count)) 200 if (!ReadParam(m, iter, &count))
200 return false; 201 return false;
201 202
202 for (std::size_t i = 0; i < count; ++i) { 203 for (std::size_t i = 0; i < count; ++i) {
203 cc::FilterOperation op = cc::FilterOperation::CreateEmptyFilter(); 204 cc::FilterOperation op = cc::FilterOperation::CreateEmptyFilter();
204 if (!ReadParam(m, iter, &op)) 205 if (!ReadParam(m, iter, &op))
205 return false; 206 return false;
206 r->Append(op); 207 r->Append(op);
207 } 208 }
208 return true; 209 return true;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 } 295 }
295 l->append(") "); 296 l->append(") ");
296 } 297 }
297 298
298 void ParamTraits<cc::RenderPass>::Write(base::Pickle* m, const param_type& p) { 299 void ParamTraits<cc::RenderPass>::Write(base::Pickle* m, const param_type& p) {
299 WriteParam(m, p.id); 300 WriteParam(m, p.id);
300 WriteParam(m, p.output_rect); 301 WriteParam(m, p.output_rect);
301 WriteParam(m, p.damage_rect); 302 WriteParam(m, p.damage_rect);
302 WriteParam(m, p.transform_to_root_target); 303 WriteParam(m, p.transform_to_root_target);
303 WriteParam(m, p.has_transparent_background); 304 WriteParam(m, p.has_transparent_background);
304 WriteParam(m, p.quad_list.size()); 305 WriteParam(m, base::checked_cast<uint32_t>(p.quad_list.size()));
305 306
306 cc::SharedQuadStateList::ConstIterator shared_quad_state_iter = 307 cc::SharedQuadStateList::ConstIterator shared_quad_state_iter =
307 p.shared_quad_state_list.begin(); 308 p.shared_quad_state_list.begin();
308 cc::SharedQuadStateList::ConstIterator last_shared_quad_state_iter = 309 cc::SharedQuadStateList::ConstIterator last_shared_quad_state_iter =
309 p.shared_quad_state_list.end(); 310 p.shared_quad_state_list.end();
310 for (const auto& quad : p.quad_list) { 311 for (const auto& quad : p.quad_list) {
311 DCHECK(quad->rect.Contains(quad->visible_rect)) 312 DCHECK(quad->rect.Contains(quad->visible_rect))
312 << quad->material << " rect: " << quad->rect.ToString() 313 << quad->material << " rect: " << quad->rect.ToString()
313 << " visible_rect: " << quad->visible_rect.ToString(); 314 << " visible_rect: " << quad->visible_rect.ToString();
314 DCHECK(quad->opaque_rect.IsEmpty() || 315 DCHECK(quad->opaque_rect.IsEmpty() ||
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 } 399 }
399 400
400 bool ParamTraits<cc::RenderPass>::Read(const base::Pickle* m, 401 bool ParamTraits<cc::RenderPass>::Read(const base::Pickle* m,
401 base::PickleIterator* iter, 402 base::PickleIterator* iter,
402 param_type* p) { 403 param_type* p) {
403 cc::RenderPassId id; 404 cc::RenderPassId id;
404 gfx::Rect output_rect; 405 gfx::Rect output_rect;
405 gfx::Rect damage_rect; 406 gfx::Rect damage_rect;
406 gfx::Transform transform_to_root_target; 407 gfx::Transform transform_to_root_target;
407 bool has_transparent_background; 408 bool has_transparent_background;
408 size_t quad_list_size; 409 uint32_t quad_list_size;
409 410
410 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) || 411 if (!ReadParam(m, iter, &id) || !ReadParam(m, iter, &output_rect) ||
411 !ReadParam(m, iter, &damage_rect) || 412 !ReadParam(m, iter, &damage_rect) ||
412 !ReadParam(m, iter, &transform_to_root_target) || 413 !ReadParam(m, iter, &transform_to_root_target) ||
413 !ReadParam(m, iter, &has_transparent_background) || 414 !ReadParam(m, iter, &has_transparent_background) ||
414 !ReadParam(m, iter, &quad_list_size)) 415 !ReadParam(m, iter, &quad_list_size))
415 return false; 416 return false;
416 417
417 p->SetAll(id, 418 p->SetAll(id,
418 output_rect, 419 output_rect,
419 damage_rect, 420 damage_rect,
420 transform_to_root_target, 421 transform_to_root_target,
421 has_transparent_background); 422 has_transparent_background);
422 423
423 for (size_t i = 0; i < quad_list_size; ++i) { 424 for (uint32_t i = 0; i < quad_list_size; ++i) {
424 cc::DrawQuad::Material material; 425 cc::DrawQuad::Material material;
425 base::PickleIterator temp_iter = *iter; 426 base::PickleIterator temp_iter = *iter;
426 if (!ReadParam(m, &temp_iter, &material)) 427 if (!ReadParam(m, &temp_iter, &material))
427 return false; 428 return false;
428 429
429 cc::DrawQuad* draw_quad = NULL; 430 cc::DrawQuad* draw_quad = NULL;
430 switch (material) { 431 switch (material) {
431 case cc::DrawQuad::DEBUG_BORDER: 432 case cc::DrawQuad::DEBUG_BORDER:
432 draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter, p); 433 draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter, p);
433 break; 434 break;
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 size_t to_reserve = sizeof(p.device_scale_factor); 673 size_t to_reserve = sizeof(p.device_scale_factor);
673 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource); 674 to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource);
674 for (const auto& pass : p.render_pass_list) { 675 for (const auto& pass : p.render_pass_list) {
675 to_reserve += sizeof(size_t) * 2; 676 to_reserve += sizeof(size_t) * 2;
676 to_reserve += ReserveSizeForRenderPassWrite(*pass); 677 to_reserve += ReserveSizeForRenderPassWrite(*pass);
677 } 678 }
678 m->Reserve(to_reserve); 679 m->Reserve(to_reserve);
679 680
680 WriteParam(m, p.device_scale_factor); 681 WriteParam(m, p.device_scale_factor);
681 WriteParam(m, p.resource_list); 682 WriteParam(m, p.resource_list);
682 WriteParam(m, p.render_pass_list.size()); 683 WriteParam(m, static_cast<uint32_t>(p.render_pass_list.size()));
enne (OOO) 2016/02/08 18:39:26 Should these be checked_cast too?
jam 2016/02/08 18:43:43 yeah, done
683 for (const auto& pass : p.render_pass_list) { 684 for (const auto& pass : p.render_pass_list) {
684 WriteParam(m, pass->quad_list.size()); 685 WriteParam(m, static_cast<uint32_t>(pass->quad_list.size()));
685 WriteParam(m, pass->shared_quad_state_list.size()); 686 WriteParam(m, static_cast<uint32_t>(pass->shared_quad_state_list.size()));
686 WriteParam(m, *pass); 687 WriteParam(m, *pass);
687 } 688 }
688 } 689 }
689 690
690 bool ParamTraits<cc::DelegatedFrameData>::Read(const base::Pickle* m, 691 bool ParamTraits<cc::DelegatedFrameData>::Read(const base::Pickle* m,
691 base::PickleIterator* iter, 692 base::PickleIterator* iter,
692 param_type* p) { 693 param_type* p) {
693 if (!ReadParam(m, iter, &p->device_scale_factor)) 694 if (!ReadParam(m, iter, &p->device_scale_factor))
694 return false; 695 return false;
695 696
696 const static size_t kMaxRenderPasses = 10000; 697 const static size_t kMaxRenderPasses = 10000;
697 const static size_t kMaxSharedQuadStateListSize = 100000; 698 const static size_t kMaxSharedQuadStateListSize = 100000;
698 const static size_t kMaxQuadListSize = 1000000; 699 const static size_t kMaxQuadListSize = 1000000;
699 700
700 std::set<cc::RenderPassId> pass_set; 701 std::set<cc::RenderPassId> pass_set;
701 702
702 size_t num_render_passes; 703 uint32_t num_render_passes;
703 if (!ReadParam(m, iter, &p->resource_list) || 704 if (!ReadParam(m, iter, &p->resource_list) ||
704 !ReadParam(m, iter, &num_render_passes) || 705 !ReadParam(m, iter, &num_render_passes) ||
705 num_render_passes > kMaxRenderPasses || num_render_passes == 0) 706 num_render_passes > kMaxRenderPasses || num_render_passes == 0)
706 return false; 707 return false;
707 for (size_t i = 0; i < num_render_passes; ++i) { 708 for (uint32_t i = 0; i < num_render_passes; ++i) {
708 size_t quad_list_size; 709 uint32_t quad_list_size;
709 size_t shared_quad_state_list_size; 710 uint32_t shared_quad_state_list_size;
710 if (!ReadParam(m, iter, &quad_list_size) || 711 if (!ReadParam(m, iter, &quad_list_size) ||
711 !ReadParam(m, iter, &shared_quad_state_list_size) || 712 !ReadParam(m, iter, &shared_quad_state_list_size) ||
712 quad_list_size > kMaxQuadListSize || 713 quad_list_size > kMaxQuadListSize ||
713 shared_quad_state_list_size > kMaxSharedQuadStateListSize) 714 shared_quad_state_list_size > kMaxSharedQuadStateListSize)
714 return false; 715 return false;
715 scoped_ptr<cc::RenderPass> render_pass = 716 scoped_ptr<cc::RenderPass> render_pass =
716 cc::RenderPass::Create(shared_quad_state_list_size, quad_list_size); 717 cc::RenderPass::Create(
718 static_cast<size_t>(shared_quad_state_list_size),
719 static_cast<size_t>(quad_list_size));
717 if (!ReadParam(m, iter, render_pass.get())) 720 if (!ReadParam(m, iter, render_pass.get()))
718 return false; 721 return false;
719 // Validate that each RenderPassDrawQuad points at a valid RenderPass 722 // Validate that each RenderPassDrawQuad points at a valid RenderPass
720 // earlier in the frame. 723 // earlier in the frame.
721 for (const auto* quad : render_pass->quad_list) { 724 for (const auto* quad : render_pass->quad_list) {
722 if (quad->material != cc::DrawQuad::RENDER_PASS) 725 if (quad->material != cc::DrawQuad::RENDER_PASS)
723 continue; 726 continue;
724 const cc::RenderPassDrawQuad* rpdq = 727 const cc::RenderPassDrawQuad* rpdq =
725 cc::RenderPassDrawQuad::MaterialCast(quad); 728 cc::RenderPassDrawQuad::MaterialCast(quad);
726 if (!pass_set.count(rpdq->render_pass_id)) 729 if (!pass_set.count(rpdq->render_pass_id))
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 l->append("TextureDrawQuad::OverlayResources(["); 845 l->append("TextureDrawQuad::OverlayResources([");
843 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) { 846 for (size_t i = 0; i < cc::DrawQuad::Resources::kMaxResourceIdCount; ++i) {
844 LogParam(p.size_in_pixels[i], l); 847 LogParam(p.size_in_pixels[i], l);
845 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1)) 848 if (i < (cc::DrawQuad::Resources::kMaxResourceIdCount - 1))
846 l->append(", "); 849 l->append(", ");
847 } 850 }
848 l->append("])"); 851 l->append("])");
849 } 852 }
850 853
851 } // namespace IPC 854 } // namespace IPC
OLDNEW
« no previous file with comments | « cc/quads/render_pass_id.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698