| 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/trees/quad_culler.h" | 5 #include "cc/trees/quad_culler.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "cc/base/math_util.h" | 9 #include "cc/base/math_util.h" |
| 10 #include "cc/debug/overdraw_metrics.h" | 10 #include "cc/debug/overdraw_metrics.h" |
| (...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 713 EXPECT_EQ(12u, quad_list.size()); | 713 EXPECT_EQ(12u, quad_list.size()); |
| 714 EXPECT_NEAR( | 714 EXPECT_NEAR( |
| 715 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 100600, 1); | 715 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 100600, 1); |
| 716 EXPECT_NEAR( | 716 EXPECT_NEAR( |
| 717 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 717 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
| 718 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | 718 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), |
| 719 29400, | 719 29400, |
| 720 1); | 720 1); |
| 721 } | 721 } |
| 722 | 722 |
| 723 TEST_F(QuadCullerTest, VerifyCullOutsideScissorOverTile) { | |
| 724 DECLARE_AND_INITIALIZE_TEST_QUADS(); | |
| 725 scoped_ptr<TiledLayerImpl> root_layer = | |
| 726 MakeLayer(NULL, | |
| 727 gfx::Transform(), | |
| 728 root_rect, | |
| 729 1, | |
| 730 true, | |
| 731 gfx::Rect(), | |
| 732 render_surface_layer_list); | |
| 733 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | |
| 734 gfx::Transform(), | |
| 735 child_rect, | |
| 736 1, | |
| 737 true, | |
| 738 gfx::Rect(), | |
| 739 render_surface_layer_list); | |
| 740 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(200, 100, 100, 100)); | |
| 741 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | |
| 742 | |
| 743 AppendQuads(&quad_list, | |
| 744 &shared_state_list, | |
| 745 child_layer.get(), | |
| 746 &it, | |
| 747 &occlusion_tracker); | |
| 748 AppendQuads(&quad_list, | |
| 749 &shared_state_list, | |
| 750 root_layer.get(), | |
| 751 &it, | |
| 752 &occlusion_tracker); | |
| 753 EXPECT_EQ(quad_list.size(), 1u); | |
| 754 EXPECT_NEAR( | |
| 755 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 10000, 1); | |
| 756 EXPECT_NEAR( | |
| 757 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | |
| 758 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | |
| 759 120000, | |
| 760 1); | |
| 761 } | |
| 762 | |
| 763 TEST_F(QuadCullerTest, VerifyCullOutsideScissorOverCulledTile) { | |
| 764 DECLARE_AND_INITIALIZE_TEST_QUADS(); | |
| 765 scoped_ptr<TiledLayerImpl> root_layer = | |
| 766 MakeLayer(NULL, | |
| 767 gfx::Transform(), | |
| 768 root_rect, | |
| 769 1, | |
| 770 true, | |
| 771 gfx::Rect(), | |
| 772 render_surface_layer_list); | |
| 773 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | |
| 774 gfx::Transform(), | |
| 775 child_rect, | |
| 776 1, | |
| 777 true, | |
| 778 gfx::Rect(), | |
| 779 render_surface_layer_list); | |
| 780 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(100, 100, 100, 100)); | |
| 781 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | |
| 782 | |
| 783 AppendQuads(&quad_list, | |
| 784 &shared_state_list, | |
| 785 child_layer.get(), | |
| 786 &it, | |
| 787 &occlusion_tracker); | |
| 788 AppendQuads(&quad_list, | |
| 789 &shared_state_list, | |
| 790 root_layer.get(), | |
| 791 &it, | |
| 792 &occlusion_tracker); | |
| 793 EXPECT_EQ(quad_list.size(), 1u); | |
| 794 EXPECT_NEAR( | |
| 795 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 10000, 1); | |
| 796 EXPECT_NEAR( | |
| 797 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | |
| 798 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | |
| 799 120000, | |
| 800 1); | |
| 801 } | |
| 802 | |
| 803 TEST_F(QuadCullerTest, VerifyCullOutsideScissorOverPartialTiles) { | |
| 804 DECLARE_AND_INITIALIZE_TEST_QUADS(); | |
| 805 scoped_ptr<TiledLayerImpl> root_layer = | |
| 806 MakeLayer(NULL, | |
| 807 gfx::Transform(), | |
| 808 root_rect, | |
| 809 1, | |
| 810 true, | |
| 811 gfx::Rect(), | |
| 812 render_surface_layer_list); | |
| 813 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | |
| 814 gfx::Transform(), | |
| 815 child_rect, | |
| 816 1, | |
| 817 true, | |
| 818 gfx::Rect(), | |
| 819 render_surface_layer_list); | |
| 820 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(50, 50, 200, 200)); | |
| 821 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | |
| 822 | |
| 823 AppendQuads(&quad_list, | |
| 824 &shared_state_list, | |
| 825 child_layer.get(), | |
| 826 &it, | |
| 827 &occlusion_tracker); | |
| 828 AppendQuads(&quad_list, | |
| 829 &shared_state_list, | |
| 830 root_layer.get(), | |
| 831 &it, | |
| 832 &occlusion_tracker); | |
| 833 EXPECT_EQ(quad_list.size(), 9u); | |
| 834 EXPECT_NEAR( | |
| 835 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 40000, 1); | |
| 836 EXPECT_NEAR( | |
| 837 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | |
| 838 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | |
| 839 90000, | |
| 840 1); | |
| 841 } | |
| 842 | |
| 843 TEST_F(QuadCullerTest, VerifyCullOutsideScissorOverNoTiles) { | |
| 844 DECLARE_AND_INITIALIZE_TEST_QUADS(); | |
| 845 scoped_ptr<TiledLayerImpl> root_layer = | |
| 846 MakeLayer(NULL, | |
| 847 gfx::Transform(), | |
| 848 root_rect, | |
| 849 1, | |
| 850 true, | |
| 851 gfx::Rect(), | |
| 852 render_surface_layer_list); | |
| 853 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | |
| 854 gfx::Transform(), | |
| 855 child_rect, | |
| 856 1, | |
| 857 true, | |
| 858 gfx::Rect(), | |
| 859 render_surface_layer_list); | |
| 860 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(500, 500, 100, 100)); | |
| 861 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | |
| 862 | |
| 863 AppendQuads(&quad_list, | |
| 864 &shared_state_list, | |
| 865 child_layer.get(), | |
| 866 &it, | |
| 867 &occlusion_tracker); | |
| 868 AppendQuads(&quad_list, | |
| 869 &shared_state_list, | |
| 870 root_layer.get(), | |
| 871 &it, | |
| 872 &occlusion_tracker); | |
| 873 EXPECT_EQ(quad_list.size(), 0u); | |
| 874 EXPECT_NEAR( | |
| 875 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 0, 1); | |
| 876 EXPECT_NEAR( | |
| 877 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | |
| 878 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | |
| 879 130000, | |
| 880 1); | |
| 881 } | |
| 882 | |
| 883 TEST_F(QuadCullerTest, VerifyWithoutMetrics) { | 723 TEST_F(QuadCullerTest, VerifyWithoutMetrics) { |
| 884 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 724 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
| 885 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 725 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
| 886 gfx::Transform(), | 726 gfx::Transform(), |
| 887 root_rect, | 727 root_rect, |
| 888 1.f, | 728 1.f, |
| 889 true, | 729 true, |
| 890 gfx::Rect(), | 730 gfx::Rect(), |
| 891 render_surface_layer_list); | 731 render_surface_layer_list); |
| 892 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 732 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
| 893 gfx::Transform(), | 733 gfx::Transform(), |
| 894 child_rect, | 734 child_rect, |
| 895 1.f, | 735 1.f, |
| 896 true, | 736 true, |
| 897 gfx::Rect(), | 737 gfx::Rect(), |
| 898 render_surface_layer_list); | 738 render_surface_layer_list); |
| 899 bool record_metrics = false; | 739 bool record_metrics = false; |
| 900 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(50, 50, 200, 200), | 740 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000), |
| 901 record_metrics); | 741 record_metrics); |
| 902 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 742 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
| 903 | 743 |
| 904 AppendQuads(&quad_list, | 744 AppendQuads(&quad_list, |
| 905 &shared_state_list, | 745 &shared_state_list, |
| 906 child_layer.get(), | 746 child_layer.get(), |
| 907 &it, | 747 &it, |
| 908 &occlusion_tracker); | 748 &occlusion_tracker); |
| 909 AppendQuads(&quad_list, | 749 AppendQuads(&quad_list, |
| 910 &shared_state_list, | 750 &shared_state_list, |
| 911 root_layer.get(), | 751 root_layer.get(), |
| 912 &it, | 752 &it, |
| 913 &occlusion_tracker); | 753 &occlusion_tracker); |
| 914 EXPECT_EQ(9u, quad_list.size()); | 754 EXPECT_EQ(9u, quad_list.size()); |
| 915 EXPECT_EQ(0.f, | 755 EXPECT_EQ(0.f, |
| 916 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque()); | 756 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque()); |
| 917 EXPECT_EQ(0.f, | 757 EXPECT_EQ(0.f, |
| 918 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent()); | 758 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent()); |
| 919 EXPECT_EQ(0.f, | 759 EXPECT_EQ(0.f, |
| 920 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing()); | 760 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing()); |
| 921 } | 761 } |
| 922 | 762 |
| 923 } // namespace | 763 } // namespace |
| 924 } // namespace cc | 764 } // namespace cc |
| OLD | NEW |