| OLD | NEW |
| 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/tiled_layer.h" | 5 #include "cc/tiled_layer.h" |
| 6 | 6 |
| 7 #include "cc/bitmap_content_layer_updater.h" | 7 #include "cc/bitmap_content_layer_updater.h" |
| 8 #include "cc/layer_painter.h" | 8 #include "cc/layer_painter.h" |
| 9 #include "cc/overdraw_metrics.h" | 9 #include "cc/overdraw_metrics.h" |
| 10 #include "cc/rendering_stats.h" | 10 #include "cc/rendering_stats.h" |
| (...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 layer->update(*m_queue.get(), 0, m_stats); | 756 layer->update(*m_queue.get(), 0, m_stats); |
| 757 updateTextures(); | 757 updateTextures(); |
| 758 layerPushPropertiesTo(layer.get(), layerImpl.get()); | 758 layerPushPropertiesTo(layer.get(), layerImpl.get()); |
| 759 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); | 759 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); |
| 760 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1)); | 760 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1)); |
| 761 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 0)); | 761 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 0)); |
| 762 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 1)); | 762 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 1)); |
| 763 | 763 |
| 764 // Change the contents scale and verify that the content rectangle requiring
painting | 764 // Change the contents scale and verify that the content rectangle requiring
painting |
| 765 // is not scaled. | 765 // is not scaled. |
| 766 layer->setContentsScale(2); | 766 layer->setIdealContentsScale(2); |
| 767 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 200, 200); | 767 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 200, 200); |
| 768 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect
()); | 768 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect
()); |
| 769 | 769 |
| 770 // The impl side should get 2x2 tiles now. | 770 // The impl side should get 2x2 tiles now. |
| 771 layer->setTexturePriorities(m_priorityCalculator); | 771 layer->setTexturePriorities(m_priorityCalculator); |
| 772 m_resourceManager->prioritizeTextures(); | 772 m_resourceManager->prioritizeTextures(); |
| 773 layer->update(*m_queue.get(), 0, m_stats); | 773 layer->update(*m_queue.get(), 0, m_stats); |
| 774 updateTextures(); | 774 updateTextures(); |
| 775 layerPushPropertiesTo(layer.get(), layerImpl.get()); | 775 layerPushPropertiesTo(layer.get(), layerImpl.get()); |
| 776 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); | 776 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); |
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1169 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling) | 1169 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling) |
| 1170 { | 1170 { |
| 1171 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer(
m_resourceManager.get())); | 1171 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer(
m_resourceManager.get())); |
| 1172 TestOcclusionTracker occluded; | 1172 TestOcclusionTracker occluded; |
| 1173 | 1173 |
| 1174 // The tile size is 100x100. | 1174 // The tile size is 100x100. |
| 1175 | 1175 |
| 1176 // This makes sure the painting works when the content space is scaled to | 1176 // This makes sure the painting works when the content space is scaled to |
| 1177 // a different layer space. In this case tiles are scaled to be 200x200 | 1177 // a different layer space. In this case tiles are scaled to be 200x200 |
| 1178 // pixels, which means none should be occluded. | 1178 // pixels, which means none should be occluded. |
| 1179 layer->setContentsScale(0.5); | 1179 layer->setIdealContentsScale(0.5); |
| 1180 EXPECT_FLOAT_EQ(layer->contentsScaleX(), layer->contentsScaleY()); | 1180 EXPECT_FLOAT_EQ(layer->contentsScaleX(), layer->contentsScaleY()); |
| 1181 layer->setBounds(gfx::Size(600, 600)); | 1181 layer->setBounds(gfx::Size(600, 600)); |
| 1182 gfx::Transform drawTransform; | 1182 gfx::Transform drawTransform; |
| 1183 double invScaleFactor = 1 / layer->contentsScaleX(); | 1183 double invScaleFactor = 1 / layer->contentsScaleX(); |
| 1184 drawTransform.Scale(invScaleFactor, invScaleFactor); | 1184 drawTransform.Scale(invScaleFactor, invScaleFactor); |
| 1185 layer->drawProperties().target_space_transform = drawTransform; | 1185 layer->drawProperties().target_space_transform = drawTransform; |
| 1186 layer->drawProperties().screen_space_transform = drawTransform; | 1186 layer->drawProperties().screen_space_transform = drawTransform; |
| 1187 | 1187 |
| 1188 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); | 1188 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); |
| 1189 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye
r->bounds()); | 1189 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye
r->bounds()); |
| (...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1570 scoped_refptr<BitmapContentLayerUpdater> m_layerUpdater; | 1570 scoped_refptr<BitmapContentLayerUpdater> m_layerUpdater; |
| 1571 }; | 1571 }; |
| 1572 | 1572 |
| 1573 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringPaint) | 1573 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringPaint) |
| 1574 { | 1574 { |
| 1575 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
eTrackingTiledLayer(m_resourceManager.get())); | 1575 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
eTrackingTiledLayer(m_resourceManager.get())); |
| 1576 | 1576 |
| 1577 gfx::Rect layerRect(0, 0, 30, 31); | 1577 gfx::Rect layerRect(0, 0, 30, 31); |
| 1578 layer->setPosition(layerRect.origin()); | 1578 layer->setPosition(layerRect.origin()); |
| 1579 layer->setBounds(layerRect.size()); | 1579 layer->setBounds(layerRect.size()); |
| 1580 layer->setContentsScale(1.5); | 1580 layer->setIdealContentsScale(1.5); |
| 1581 | 1581 |
| 1582 gfx::Rect contentRect(0, 0, 45, 47); | 1582 gfx::Rect contentRect(0, 0, 45, 47); |
| 1583 EXPECT_EQ(contentRect.size(), layer->contentBounds()); | 1583 EXPECT_EQ(contentRect.size(), layer->contentBounds()); |
| 1584 layer->drawProperties().visible_content_rect = contentRect; | 1584 layer->drawProperties().visible_content_rect = contentRect; |
| 1585 layer->drawProperties().drawable_content_rect = contentRect; | 1585 layer->drawProperties().drawable_content_rect = contentRect; |
| 1586 | 1586 |
| 1587 layer->setTexturePriorities(m_priorityCalculator); | 1587 layer->setTexturePriorities(m_priorityCalculator); |
| 1588 m_resourceManager->prioritizeTextures(); | 1588 m_resourceManager->prioritizeTextures(); |
| 1589 | 1589 |
| 1590 // Update the whole tile. | 1590 // Update the whole tile. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1601 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); | 1601 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); |
| 1602 } | 1602 } |
| 1603 | 1603 |
| 1604 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringInvalidation) | 1604 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringInvalidation) |
| 1605 { | 1605 { |
| 1606 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
eTrackingTiledLayer(m_resourceManager.get())); | 1606 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
eTrackingTiledLayer(m_resourceManager.get())); |
| 1607 | 1607 |
| 1608 gfx::Rect layerRect(0, 0, 30, 31); | 1608 gfx::Rect layerRect(0, 0, 30, 31); |
| 1609 layer->setPosition(layerRect.origin()); | 1609 layer->setPosition(layerRect.origin()); |
| 1610 layer->setBounds(layerRect.size()); | 1610 layer->setBounds(layerRect.size()); |
| 1611 layer->setContentsScale(1.3f); | 1611 layer->setIdealContentsScale(1.3f); |
| 1612 | 1612 |
| 1613 gfx::Rect contentRect(gfx::Point(), layer->contentBounds()); | 1613 gfx::Rect contentRect(gfx::Point(), layer->contentBounds()); |
| 1614 layer->drawProperties().visible_content_rect = contentRect; | 1614 layer->drawProperties().visible_content_rect = contentRect; |
| 1615 layer->drawProperties().drawable_content_rect = contentRect; | 1615 layer->drawProperties().drawable_content_rect = contentRect; |
| 1616 | 1616 |
| 1617 layer->setTexturePriorities(m_priorityCalculator); | 1617 layer->setTexturePriorities(m_priorityCalculator); |
| 1618 m_resourceManager->prioritizeTextures(); | 1618 m_resourceManager->prioritizeTextures(); |
| 1619 | 1619 |
| 1620 // Update the whole tile. | 1620 // Update the whole tile. |
| 1621 layer->update(*m_queue.get(), 0, m_stats); | 1621 layer->update(*m_queue.get(), 0, m_stats); |
| 1622 layer->trackingLayerPainter()->resetPaintedRect(); | 1622 layer->trackingLayerPainter()->resetPaintedRect(); |
| 1623 | 1623 |
| 1624 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect()); | 1624 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect()); |
| 1625 updateTextures(); | 1625 updateTextures(); |
| 1626 | 1626 |
| 1627 // Invalidate the entire layer in layer space. When painting, the rect given
to webkit should match the layer's bounds. | 1627 // Invalidate the entire layer in layer space. When painting, the rect given
to webkit should match the layer's bounds. |
| 1628 layer->setNeedsDisplayRect(layerRect); | 1628 layer->setNeedsDisplayRect(layerRect); |
| 1629 layer->update(*m_queue.get(), 0, m_stats); | 1629 layer->update(*m_queue.get(), 0, m_stats); |
| 1630 | 1630 |
| 1631 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); | 1631 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); |
| 1632 } | 1632 } |
| 1633 | 1633 |
| 1634 } // namespace | 1634 } // namespace |
| 1635 } // namespace cc | 1635 } // namespace cc |
| OLD | NEW |