| OLD | NEW |
| 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/quad_culler.h" | 5 #include "cc/quad_culler.h" |
| 6 | 6 |
| 7 #include "cc/append_quads_data.h" | 7 #include "cc/append_quads_data.h" |
| 8 #include "cc/layer_tiling_data.h" | 8 #include "cc/layer_tiling_data.h" |
| 9 #include "cc/math_util.h" | 9 #include "cc/math_util.h" |
| 10 #include "cc/occlusion_tracker.h" | 10 #include "cc/occlusion_tracker.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 gfx::Rect m_scissorRectInScreen; | 36 gfx::Rect m_scissorRectInScreen; |
| 37 }; | 37 }; |
| 38 | 38 |
| 39 typedef LayerIterator<LayerImpl, std::vector<LayerImpl*>, RenderSurfaceImpl, Lay
erIteratorActions::FrontToBack> LayerIteratorType; | 39 typedef LayerIterator<LayerImpl, std::vector<LayerImpl*>, RenderSurfaceImpl, Lay
erIteratorActions::FrontToBack> LayerIteratorType; |
| 40 | 40 |
| 41 class QuadCullerTest : public testing::Test | 41 class QuadCullerTest : public testing::Test |
| 42 { | 42 { |
| 43 public: | 43 public: |
| 44 QuadCullerTest() | 44 QuadCullerTest() |
| 45 : m_hostImpl(&m_proxy) | 45 : m_hostImpl(&m_proxy) |
| 46 , m_layerId(1) | 46 , layer_id_(1) |
| 47 { | 47 { |
| 48 } | 48 } |
| 49 | 49 |
| 50 scoped_ptr<TiledLayerImpl> makeLayer(TiledLayerImpl* parent, const gfx::Tran
sform& drawTransform, const gfx::Rect& layerRect, float opacity, bool opaque, co
nst gfx::Rect& layerOpaqueRect, std::vector<LayerImpl*>& surfaceLayerList) | 50 scoped_ptr<TiledLayerImpl> makeLayer(TiledLayerImpl* parent, const gfx::Tran
sform& drawTransform, const gfx::Rect& layerRect, float opacity, bool opaque, co
nst gfx::Rect& layerOpaqueRect, std::vector<LayerImpl*>& surfaceLayerList) |
| 51 { | 51 { |
| 52 scoped_ptr<TiledLayerImpl> layer = TiledLayerImpl::create(m_hostImpl.act
iveTree(), m_layerId++); | 52 scoped_ptr<TiledLayerImpl> layer = TiledLayerImpl::Create(m_hostImpl.act
iveTree(), layer_id_++); |
| 53 scoped_ptr<LayerTilingData> tiler = LayerTilingData::create(gfx::Size(10
0, 100), LayerTilingData::NoBorderTexels); | 53 scoped_ptr<LayerTilingData> tiler = LayerTilingData::create(gfx::Size(10
0, 100), LayerTilingData::NoBorderTexels); |
| 54 tiler->setBounds(layerRect.size()); | 54 tiler->setBounds(layerRect.size()); |
| 55 layer->setTilingData(*tiler); | 55 layer->setTilingData(*tiler); |
| 56 layer->setSkipsDraw(false); | 56 layer->setSkipsDraw(false); |
| 57 layer->drawProperties().target_space_transform = drawTransform; | 57 layer->draw_properties().target_space_transform = drawTransform; |
| 58 layer->drawProperties().screen_space_transform = drawTransform; | 58 layer->draw_properties().screen_space_transform = drawTransform; |
| 59 layer->drawProperties().visible_content_rect = layerRect; | 59 layer->draw_properties().visible_content_rect = layerRect; |
| 60 layer->drawProperties().opacity = opacity; | 60 layer->draw_properties().opacity = opacity; |
| 61 layer->setContentsOpaque(opaque); | 61 layer->SetContentsOpaque(opaque); |
| 62 layer->setBounds(layerRect.size()); | 62 layer->SetBounds(layerRect.size()); |
| 63 layer->setContentBounds(layerRect.size()); | 63 layer->SetContentBounds(layerRect.size()); |
| 64 | 64 |
| 65 ResourceProvider::ResourceId resourceId = 1; | 65 ResourceProvider::ResourceId resourceId = 1; |
| 66 for (int i = 0; i < tiler->numTilesX(); ++i) | 66 for (int i = 0; i < tiler->numTilesX(); ++i) |
| 67 for (int j = 0; j < tiler->numTilesY(); ++j) { | 67 for (int j = 0; j < tiler->numTilesY(); ++j) { |
| 68 gfx::Rect tileOpaqueRect = opaque ? tiler->tileBounds(i, j) : gfx:
:IntersectRects(tiler->tileBounds(i, j), layerOpaqueRect); | 68 gfx::Rect tileOpaqueRect = opaque ? tiler->tileBounds(i, j) : gfx:
:IntersectRects(tiler->tileBounds(i, j), layerOpaqueRect); |
| 69 layer->pushTileProperties(i, j, resourceId++, tileOpaqueRect, fa
lse); | 69 layer->pushTileProperties(i, j, resourceId++, tileOpaqueRect, fa
lse); |
| 70 } | 70 } |
| 71 | 71 |
| 72 gfx::Rect rectInTarget = MathUtil::mapClippedRect(layer->drawTransform()
, layer->visibleContentRect()); | 72 gfx::Rect rectInTarget = MathUtil::mapClippedRect(layer->draw_transform(
), layer->visible_content_rect()); |
| 73 if (!parent) { | 73 if (!parent) { |
| 74 layer->createRenderSurface(); | 74 layer->CreateRenderSurface(); |
| 75 layer->renderSurface()->SetContentRect(rectInTarget); | 75 layer->render_surface()->SetContentRect(rectInTarget); |
| 76 surfaceLayerList.push_back(layer.get()); | 76 surfaceLayerList.push_back(layer.get()); |
| 77 layer->renderSurface()->layer_list().push_back(layer.get()); | 77 layer->render_surface()->layer_list().push_back(layer.get()); |
| 78 } else { | 78 } else { |
| 79 layer->drawProperties().render_target = parent->renderTarget(); | 79 layer->draw_properties().render_target = parent->render_target(); |
| 80 parent->renderSurface()->layer_list().push_back(layer.get()); | 80 parent->render_surface()->layer_list().push_back(layer.get()); |
| 81 rectInTarget.Union(MathUtil::mapClippedRect(parent->drawTransform(),
parent->visibleContentRect())); | 81 rectInTarget.Union(MathUtil::mapClippedRect(parent->draw_transform()
, parent->visible_content_rect())); |
| 82 parent->renderSurface()->SetContentRect(rectInTarget); | 82 parent->render_surface()->SetContentRect(rectInTarget); |
| 83 } | 83 } |
| 84 layer->drawProperties().drawable_content_rect = rectInTarget; | 84 layer->draw_properties().drawable_content_rect = rectInTarget; |
| 85 | 85 |
| 86 return layer.Pass(); | 86 return layer.Pass(); |
| 87 } | 87 } |
| 88 | 88 |
| 89 void appendQuads(QuadList& quadList, SharedQuadStateList& sharedStateList, T
iledLayerImpl* layer, LayerIteratorType& it, OcclusionTrackerImpl& occlusionTrac
ker) | 89 void appendQuads(QuadList& quadList, SharedQuadStateList& sharedStateList, T
iledLayerImpl* layer, LayerIteratorType& it, OcclusionTrackerImpl& occlusionTrac
ker) |
| 90 { | 90 { |
| 91 occlusionTracker.EnterLayer(it); | 91 occlusionTracker.EnterLayer(it); |
| 92 QuadCuller quadCuller(quadList, sharedStateList, layer, occlusionTracker
, false, false); | 92 QuadCuller quadCuller(quadList, sharedStateList, layer, occlusionTracker
, false, false); |
| 93 AppendQuadsData data; | 93 AppendQuadsData data; |
| 94 layer->appendQuads(quadCuller, data); | 94 layer->AppendQuads(&quadCuller, &data); |
| 95 occlusionTracker.LeaveLayer(it); | 95 occlusionTracker.LeaveLayer(it); |
| 96 ++it; | 96 ++it; |
| 97 } | 97 } |
| 98 | 98 |
| 99 protected: | 99 protected: |
| 100 FakeImplProxy m_proxy; | 100 FakeImplProxy m_proxy; |
| 101 FakeLayerTreeHostImpl m_hostImpl; | 101 FakeLayerTreeHostImpl m_hostImpl; |
| 102 int m_layerId; | 102 int layer_id_; |
| 103 }; | 103 }; |
| 104 | 104 |
| 105 #define DECLARE_AND_INITIALIZE_TEST_QUADS \ | 105 #define DECLARE_AND_INITIALIZE_TEST_QUADS \ |
| 106 QuadList quadList; \ | 106 QuadList quadList; \ |
| 107 SharedQuadStateList sharedStateList; \ | 107 SharedQuadStateList sharedStateList; \ |
| 108 std::vector<LayerImpl*> renderSurfaceLayerList; \ | 108 std::vector<LayerImpl*> renderSurfaceLayerList; \ |
| 109 gfx::Transform childTransform; \ | 109 gfx::Transform childTransform; \ |
| 110 gfx::Size rootSize = gfx::Size(300, 300); \ | 110 gfx::Size rootSize = gfx::Size(300, 300); \ |
| 111 gfx::Rect rootRect = gfx::Rect(rootSize); \ | 111 gfx::Rect rootRect = gfx::Rect(rootSize); \ |
| 112 gfx::Size childSize = gfx::Size(200, 200); \ | 112 gfx::Size childSize = gfx::Size(200, 200); \ |
| (...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke
r); | 476 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke
r); |
| 477 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker
); | 477 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker
); |
| 478 EXPECT_EQ(quadList.size(), 9u); | 478 EXPECT_EQ(quadList.size(), 9u); |
| 479 EXPECT_NEAR(occlusionTracker.OverdrawMetrics().pixels_drawn_opaque(), 0, 1); | 479 EXPECT_NEAR(occlusionTracker.OverdrawMetrics().pixels_drawn_opaque(), 0, 1); |
| 480 EXPECT_NEAR(occlusionTracker.OverdrawMetrics().pixels_drawn_translucent(), 0
, 1); | 480 EXPECT_NEAR(occlusionTracker.OverdrawMetrics().pixels_drawn_translucent(), 0
, 1); |
| 481 EXPECT_NEAR(occlusionTracker.OverdrawMetrics().pixels_culled_for_drawing(),
0, 1); | 481 EXPECT_NEAR(occlusionTracker.OverdrawMetrics().pixels_culled_for_drawing(),
0, 1); |
| 482 } | 482 } |
| 483 | 483 |
| 484 } // namespace | 484 } // namespace |
| 485 } // namespace cc | 485 } // namespace cc |
| OLD | NEW |