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

Side by Side Diff: cc/output/direct_renderer.cc

Issue 1437413002: cc: Remove ScopedPtrVector and cc::remove_if. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: just the vector Created 5 years, 1 month 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "cc/output/direct_renderer.h" 5 #include "cc/output/direct_renderer.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 const gfx::Vector2d& amount) { 144 const gfx::Vector2d& amount) {
145 enlarge_pass_texture_amount_ = amount; 145 enlarge_pass_texture_amount_ = amount;
146 } 146 }
147 147
148 void DirectRenderer::DecideRenderPassAllocationsForFrame( 148 void DirectRenderer::DecideRenderPassAllocationsForFrame(
149 const RenderPassList& render_passes_in_draw_order) { 149 const RenderPassList& render_passes_in_draw_order) {
150 base::hash_map<RenderPassId, gfx::Size> render_passes_in_frame; 150 base::hash_map<RenderPassId, gfx::Size> render_passes_in_frame;
151 for (size_t i = 0; i < render_passes_in_draw_order.size(); ++i) 151 for (size_t i = 0; i < render_passes_in_draw_order.size(); ++i)
152 render_passes_in_frame.insert(std::pair<RenderPassId, gfx::Size>( 152 render_passes_in_frame.insert(std::pair<RenderPassId, gfx::Size>(
153 render_passes_in_draw_order[i]->id, 153 render_passes_in_draw_order[i]->id,
154 RenderPassTextureSize(render_passes_in_draw_order[i]))); 154 RenderPassTextureSize(render_passes_in_draw_order[i].get())));
155 155
156 std::vector<RenderPassId> passes_to_delete; 156 std::vector<RenderPassId> passes_to_delete;
157 for (auto pass_iter = render_pass_textures_.begin(); 157 for (auto pass_iter = render_pass_textures_.begin();
158 pass_iter != render_pass_textures_.end(); ++pass_iter) { 158 pass_iter != render_pass_textures_.end(); ++pass_iter) {
159 base::hash_map<RenderPassId, gfx::Size>::const_iterator it = 159 base::hash_map<RenderPassId, gfx::Size>::const_iterator it =
160 render_passes_in_frame.find(pass_iter->first); 160 render_passes_in_frame.find(pass_iter->first);
161 if (it == render_passes_in_frame.end()) { 161 if (it == render_passes_in_frame.end()) {
162 passes_to_delete.push_back(pass_iter->first); 162 passes_to_delete.push_back(pass_iter->first);
163 continue; 163 continue;
164 } 164 }
(...skipping 26 matching lines...) Expand all
191 void DirectRenderer::DrawFrame(RenderPassList* render_passes_in_draw_order, 191 void DirectRenderer::DrawFrame(RenderPassList* render_passes_in_draw_order,
192 float device_scale_factor, 192 float device_scale_factor,
193 const gfx::Rect& device_viewport_rect, 193 const gfx::Rect& device_viewport_rect,
194 const gfx::Rect& device_clip_rect, 194 const gfx::Rect& device_clip_rect,
195 bool disable_picture_quad_image_filtering) { 195 bool disable_picture_quad_image_filtering) {
196 TRACE_EVENT0("cc", "DirectRenderer::DrawFrame"); 196 TRACE_EVENT0("cc", "DirectRenderer::DrawFrame");
197 UMA_HISTOGRAM_COUNTS( 197 UMA_HISTOGRAM_COUNTS(
198 "Renderer4.renderPassCount", 198 "Renderer4.renderPassCount",
199 base::saturated_cast<int>(render_passes_in_draw_order->size())); 199 base::saturated_cast<int>(render_passes_in_draw_order->size()));
200 200
201 const RenderPass* root_render_pass = render_passes_in_draw_order->back(); 201 const RenderPass* root_render_pass =
202 render_passes_in_draw_order->back().get();
202 DCHECK(root_render_pass); 203 DCHECK(root_render_pass);
203 204
204 DrawingFrame frame; 205 DrawingFrame frame;
205 frame.render_passes_in_draw_order = render_passes_in_draw_order; 206 frame.render_passes_in_draw_order = render_passes_in_draw_order;
206 frame.root_render_pass = root_render_pass; 207 frame.root_render_pass = root_render_pass;
207 frame.root_damage_rect = Capabilities().using_partial_swap 208 frame.root_damage_rect = Capabilities().using_partial_swap
208 ? root_render_pass->damage_rect 209 ? root_render_pass->damage_rect
209 : root_render_pass->output_rect; 210 : root_render_pass->output_rect;
210 frame.root_damage_rect.Intersect(gfx::Rect(device_viewport_rect.size())); 211 frame.root_damage_rect.Intersect(gfx::Rect(device_viewport_rect.size()));
211 frame.device_viewport_rect = device_viewport_rect; 212 frame.device_viewport_rect = device_viewport_rect;
(...skipping 28 matching lines...) Expand all
240 // otherwise the framebuffer will be missing the overlay contents. 241 // otherwise the framebuffer will be missing the overlay contents.
241 if (root_render_pass->copy_requests.empty()) { 242 if (root_render_pass->copy_requests.empty()) {
242 overlay_processor_->ProcessForOverlays( 243 overlay_processor_->ProcessForOverlays(
243 resource_provider_, render_passes_in_draw_order, &frame.overlay_list, 244 resource_provider_, render_passes_in_draw_order, &frame.overlay_list,
244 &frame.root_damage_rect); 245 &frame.root_damage_rect);
245 246
246 // No need to render in case the damage rect is completely composited using 247 // No need to render in case the damage rect is completely composited using
247 // overlays and dont have any copy requests. 248 // overlays and dont have any copy requests.
248 if (frame.root_damage_rect.IsEmpty()) { 249 if (frame.root_damage_rect.IsEmpty()) {
249 bool handle_copy_requests = false; 250 bool handle_copy_requests = false;
250 for (auto* pass : *render_passes_in_draw_order) { 251 for (const scoped_ptr<RenderPass>& pass : *render_passes_in_draw_order) {
danakj 2015/11/17 01:12:17 auto
vmpstr 2015/11/17 23:26:24 Done.
251 if (!pass->copy_requests.empty()) { 252 if (!pass->copy_requests.empty()) {
252 handle_copy_requests = true; 253 handle_copy_requests = true;
253 break; 254 break;
254 } 255 }
255 } 256 }
256 257
257 if (!handle_copy_requests) { 258 if (!handle_copy_requests) {
258 BindFramebufferToOutputSurface(&frame); 259 BindFramebufferToOutputSurface(&frame);
259 FinishDrawingFrame(&frame); 260 FinishDrawingFrame(&frame);
260 render_passes_in_draw_order->clear(); 261 render_passes_in_draw_order->clear();
261 return; 262 return;
262 } 263 }
263 } 264 }
264 } 265 }
265 266
266 for (size_t i = 0; i < render_passes_in_draw_order->size(); ++i) { 267 for (size_t i = 0; i < render_passes_in_draw_order->size(); ++i) {
danakj 2015/11/17 01:12:17 what have i done. iterating on size() and using at
vmpstr 2015/11/17 23:26:24 Done.
267 RenderPass* pass = render_passes_in_draw_order->at(i); 268 RenderPass* pass = (*render_passes_in_draw_order)[i].get();
268 DrawRenderPass(&frame, pass); 269 DrawRenderPass(&frame, pass);
269 270
270 for (ScopedPtrVector<CopyOutputRequest>::iterator it = 271 for (std::vector<scoped_ptr<CopyOutputRequest>>::iterator it =
danakj 2015/11/17 01:12:17 auto
vmpstr 2015/11/17 23:26:24 Done.
271 pass->copy_requests.begin(); 272 pass->copy_requests.begin();
272 it != pass->copy_requests.end(); 273 it != pass->copy_requests.end(); ++it) {
273 ++it) {
274 if (it != pass->copy_requests.begin()) { 274 if (it != pass->copy_requests.begin()) {
275 // Doing a readback is destructive of our state on Mac, so make sure 275 // Doing a readback is destructive of our state on Mac, so make sure
276 // we restore the state between readbacks. http://crbug.com/99393. 276 // we restore the state between readbacks. http://crbug.com/99393.
277 UseRenderPass(&frame, pass); 277 UseRenderPass(&frame, pass);
278 } 278 }
279 CopyCurrentRenderPassToBitmap(&frame, pass->copy_requests.take(it)); 279 CopyCurrentRenderPassToBitmap(&frame, it->Pass());
280 } 280 }
281 } 281 }
282 FinishDrawingFrame(&frame); 282 FinishDrawingFrame(&frame);
283 283
284 render_passes_in_draw_order->clear(); 284 render_passes_in_draw_order->clear();
285 } 285 }
286 286
287 gfx::Rect DirectRenderer::ComputeScissorRectForRenderPass( 287 gfx::Rect DirectRenderer::ComputeScissorRectForRenderPass(
288 const DrawingFrame* frame) { 288 const DrawingFrame* frame) {
289 gfx::Rect render_pass_scissor = frame->current_render_pass->output_rect; 289 gfx::Rect render_pass_scissor = frame->current_render_pass->output_rect;
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 ScopedResource* texture = render_pass_textures_.get(id); 557 ScopedResource* texture = render_pass_textures_.get(id);
558 return texture && texture->id(); 558 return texture && texture->id();
559 } 559 }
560 560
561 // static 561 // static
562 gfx::Size DirectRenderer::RenderPassTextureSize(const RenderPass* render_pass) { 562 gfx::Size DirectRenderer::RenderPassTextureSize(const RenderPass* render_pass) {
563 return render_pass->output_rect.size(); 563 return render_pass->output_rect.size();
564 } 564 }
565 565
566 } // namespace cc 566 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698