GPU workaround to simulate Out of Memory errors with large textures
[chromium-blink-merge.git] / cc / output / bsp_walk_action.cc
blob9ffc2998d5ef2afa60d7a068179ce3b4da236e52
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "cc/output/bsp_walk_action.h"
7 #include <vector>
9 #include "base/memory/scoped_ptr.h"
10 #include "cc/output/direct_renderer.h"
11 #include "cc/quads/draw_polygon.h"
12 #include "cc/quads/draw_quad.h"
14 namespace cc {
16 BspWalkActionDrawPolygon::BspWalkActionDrawPolygon(
17 DirectRenderer* renderer,
18 DirectRenderer::DrawingFrame* frame,
19 const gfx::Rect& render_pass_scissor,
20 bool using_scissor_as_optimization)
21 : renderer_(renderer),
22 frame_(frame),
23 render_pass_scissor_(render_pass_scissor),
24 using_scissor_as_optimization_(using_scissor_as_optimization) {
27 void BspWalkActionDrawPolygon::operator()(DrawPolygon* item) {
28 gfx::Transform inverse_transform;
29 bool invertible =
30 item->original_ref()->quadTransform().GetInverse(&inverse_transform);
31 DCHECK(invertible);
32 item->TransformToLayerSpace(inverse_transform);
33 renderer_->DoDrawPolygon(*item, frame_, render_pass_scissor_,
34 using_scissor_as_optimization_);
37 BspWalkActionToVector::BspWalkActionToVector(std::vector<DrawPolygon*>* in_list)
38 : list_(in_list) {
41 void BspWalkActionToVector::operator()(DrawPolygon* item) {
42 list_->push_back(item);
45 } // namespace cc