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

Side by Side Diff: cc/quads/render_pass.cc

Issue 1158433010: Reland: cc: Fix size_t to int truncations in layers/ output/ playback/ quads/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/quads/render_pass.h" 5 #include "cc/quads/render_pass.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/numerics/safe_conversions.h"
9 #include "base/trace_event/trace_event_argument.h" 10 #include "base/trace_event/trace_event_argument.h"
10 #include "base/values.h" 11 #include "base/values.h"
11 #include "cc/base/math_util.h" 12 #include "cc/base/math_util.h"
12 #include "cc/debug/traced_value.h" 13 #include "cc/debug/traced_value.h"
13 #include "cc/output/copy_output_request.h" 14 #include "cc/output/copy_output_request.h"
14 #include "cc/quads/checkerboard_draw_quad.h" 15 #include "cc/quads/checkerboard_draw_quad.h"
15 #include "cc/quads/debug_border_draw_quad.h" 16 #include "cc/quads/debug_border_draw_quad.h"
16 #include "cc/quads/draw_quad.h" 17 #include "cc/quads/draw_quad.h"
17 #include "cc/quads/io_surface_draw_quad.h" 18 #include "cc/quads/io_surface_draw_quad.h"
18 #include "cc/quads/largest_draw_quad.h" 19 #include "cc/quads/largest_draw_quad.h"
(...skipping 26 matching lines...) Expand all
45 return make_scoped_ptr(new RenderPass(num_layers)); 46 return make_scoped_ptr(new RenderPass(num_layers));
46 } 47 }
47 48
48 scoped_ptr<RenderPass> RenderPass::Create(size_t shared_quad_state_list_size, 49 scoped_ptr<RenderPass> RenderPass::Create(size_t shared_quad_state_list_size,
49 size_t quad_list_size) { 50 size_t quad_list_size) {
50 return make_scoped_ptr( 51 return make_scoped_ptr(
51 new RenderPass(shared_quad_state_list_size, quad_list_size)); 52 new RenderPass(shared_quad_state_list_size, quad_list_size));
52 } 53 }
53 54
54 RenderPass::RenderPass() 55 RenderPass::RenderPass()
55 : id(RenderPassId(-1, -1)), 56 : has_transparent_background(true),
56 has_transparent_background(true),
57 quad_list(kDefaultNumQuadsToReserve), 57 quad_list(kDefaultNumQuadsToReserve),
58 shared_quad_state_list(sizeof(SharedQuadState), 58 shared_quad_state_list(sizeof(SharedQuadState),
59 kDefaultNumSharedQuadStatesToReserve) { 59 kDefaultNumSharedQuadStatesToReserve) {
60 } 60 }
61 61
62 // Each layer usually produces one shared quad state, so the number of layers 62 // Each layer usually produces one shared quad state, so the number of layers
63 // is a good hint for what to reserve here. 63 // is a good hint for what to reserve here.
64 RenderPass::RenderPass(size_t num_layers) 64 RenderPass::RenderPass(size_t num_layers)
65 : id(RenderPassId(-1, -1)), 65 : has_transparent_background(true),
66 has_transparent_background(true),
67 quad_list(kDefaultNumQuadsToReserve), 66 quad_list(kDefaultNumQuadsToReserve),
68 shared_quad_state_list(sizeof(SharedQuadState), num_layers) { 67 shared_quad_state_list(sizeof(SharedQuadState), num_layers) {
69 } 68 }
70 69
71 RenderPass::RenderPass(size_t shared_quad_state_list_size, 70 RenderPass::RenderPass(size_t shared_quad_state_list_size,
72 size_t quad_list_size) 71 size_t quad_list_size)
73 : id(RenderPassId(-1, -1)), 72 : has_transparent_background(true),
74 has_transparent_background(true),
75 quad_list(quad_list_size), 73 quad_list(quad_list_size),
76 shared_quad_state_list(sizeof(SharedQuadState), 74 shared_quad_state_list(sizeof(SharedQuadState),
77 shared_quad_state_list_size) { 75 shared_quad_state_list_size) {
78 } 76 }
79 77
80 RenderPass::~RenderPass() { 78 RenderPass::~RenderPass() {
81 TRACE_EVENT_OBJECT_DELETED_WITH_ID( 79 TRACE_EVENT_OBJECT_DELETED_WITH_ID(
82 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"), 80 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"),
83 "cc::RenderPass", id.AsTracingId()); 81 "cc::RenderPass", id.AsTracingId());
84 } 82 }
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 } 139 }
142 out->push_back(copy_pass.Pass()); 140 out->push_back(copy_pass.Pass());
143 } 141 }
144 } 142 }
145 143
146 void RenderPass::SetNew(RenderPassId id, 144 void RenderPass::SetNew(RenderPassId id,
147 const gfx::Rect& output_rect, 145 const gfx::Rect& output_rect,
148 const gfx::Rect& damage_rect, 146 const gfx::Rect& damage_rect,
149 const gfx::Transform& transform_to_root_target) { 147 const gfx::Transform& transform_to_root_target) {
150 DCHECK_GT(id.layer_id, 0); 148 DCHECK_GT(id.layer_id, 0);
151 DCHECK_GE(id.index, 0);
152 DCHECK(damage_rect.IsEmpty() || output_rect.Contains(damage_rect)) 149 DCHECK(damage_rect.IsEmpty() || output_rect.Contains(damage_rect))
153 << "damage_rect: " << damage_rect.ToString() 150 << "damage_rect: " << damage_rect.ToString()
154 << " output_rect: " << output_rect.ToString(); 151 << " output_rect: " << output_rect.ToString();
155 152
156 this->id = id; 153 this->id = id;
157 this->output_rect = output_rect; 154 this->output_rect = output_rect;
158 this->damage_rect = damage_rect; 155 this->damage_rect = damage_rect;
159 this->transform_to_root_target = transform_to_root_target; 156 this->transform_to_root_target = transform_to_root_target;
160 157
161 DCHECK(quad_list.empty()); 158 DCHECK(quad_list.empty());
162 DCHECK(shared_quad_state_list.empty()); 159 DCHECK(shared_quad_state_list.empty());
163 } 160 }
164 161
165 void RenderPass::SetAll(RenderPassId id, 162 void RenderPass::SetAll(RenderPassId id,
166 const gfx::Rect& output_rect, 163 const gfx::Rect& output_rect,
167 const gfx::Rect& damage_rect, 164 const gfx::Rect& damage_rect,
168 const gfx::Transform& transform_to_root_target, 165 const gfx::Transform& transform_to_root_target,
169 bool has_transparent_background) { 166 bool has_transparent_background) {
170 DCHECK_GT(id.layer_id, 0); 167 DCHECK_GT(id.layer_id, 0);
171 DCHECK_GE(id.index, 0);
172 168
173 this->id = id; 169 this->id = id;
174 this->output_rect = output_rect; 170 this->output_rect = output_rect;
175 this->damage_rect = damage_rect; 171 this->damage_rect = damage_rect;
176 this->transform_to_root_target = transform_to_root_target; 172 this->transform_to_root_target = transform_to_root_target;
177 this->has_transparent_background = has_transparent_background; 173 this->has_transparent_background = has_transparent_background;
178 174
179 DCHECK(quad_list.empty()); 175 DCHECK(quad_list.empty());
180 DCHECK(shared_quad_state_list.empty()); 176 DCHECK(shared_quad_state_list.empty());
181 } 177 }
182 178
183 void RenderPass::AsValueInto(base::trace_event::TracedValue* value) const { 179 void RenderPass::AsValueInto(base::trace_event::TracedValue* value) const {
184 MathUtil::AddToTracedValue("output_rect", output_rect, value); 180 MathUtil::AddToTracedValue("output_rect", output_rect, value);
185 MathUtil::AddToTracedValue("damage_rect", damage_rect, value); 181 MathUtil::AddToTracedValue("damage_rect", damage_rect, value);
186 182
187 value->SetBoolean("has_transparent_background", has_transparent_background); 183 value->SetBoolean("has_transparent_background", has_transparent_background);
188 value->SetInteger("copy_requests", copy_requests.size()); 184 value->SetInteger("copy_requests",
185 base::saturated_cast<int>(copy_requests.size()));
189 186
190 value->BeginArray("shared_quad_state_list"); 187 value->BeginArray("shared_quad_state_list");
191 for (const auto& shared_quad_state : shared_quad_state_list) { 188 for (const auto& shared_quad_state : shared_quad_state_list) {
192 value->BeginDictionary(); 189 value->BeginDictionary();
193 shared_quad_state->AsValueInto(value); 190 shared_quad_state->AsValueInto(value);
194 value->EndDictionary(); 191 value->EndDictionary();
195 } 192 }
196 value->EndArray(); 193 value->EndArray();
197 194
198 value->BeginArray("quad_list"); 195 value->BeginArray("quad_list");
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 case DrawQuad::RENDER_PASS: 260 case DrawQuad::RENDER_PASS:
264 case DrawQuad::INVALID: 261 case DrawQuad::INVALID:
265 LOG(FATAL) << "Invalid DrawQuad material " << quad->material; 262 LOG(FATAL) << "Invalid DrawQuad material " << quad->material;
266 break; 263 break;
267 } 264 }
268 quad_list.back()->shared_quad_state = shared_quad_state; 265 quad_list.back()->shared_quad_state = shared_quad_state;
269 return quad_list.back(); 266 return quad_list.back();
270 } 267 }
271 268
272 } // namespace cc 269 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698