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 |