cc: Remove usage of ComputeVisibleRects on main thread

Target space transform will not be computed on main thread. Currently we
only use it in tests and subtree skipping logic.

This CL removes the usage of ComputeVisibleRects on main thread:
1) Do not skip for back face visibility on main thread;
2) Remove main thread ComputeVisibleRects in unit tests.
3) Remove the usage in benchmarks.

BUG=581827
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel

Review-Url: https://codereview.chromium.org/2225973003
Cr-Commit-Position: refs/heads/master@{#411162}
diff --git a/cc/debug/invalidation_benchmark.cc b/cc/debug/invalidation_benchmark.cc
index 681e29e..36547c1d 100644
--- a/cc/debug/invalidation_benchmark.cc
+++ b/cc/debug/invalidation_benchmark.cc
@@ -69,12 +69,14 @@
 }
 
 void InvalidationBenchmark::RunOnLayer(PictureLayer* layer) {
-  PropertyTrees* property_trees = layer->layer_tree_host()->property_trees();
-  LayerList update_list;
-  update_list.push_back(layer);
-  draw_property_utils::ComputeVisibleRectsForTesting(
-      property_trees, property_trees->non_root_surfaces_enabled, &update_list);
-  gfx::Rect visible_layer_rect = layer->visible_layer_rect_for_testing();
+  gfx::Rect visible_layer_rect = gfx::Rect(layer->bounds());
+  gfx::Transform from_screen;
+  bool invertible = layer->screen_space_transform().GetInverse(&from_screen);
+  if (!invertible)
+    from_screen = gfx::Transform();
+  gfx::Rect viewport_rect = MathUtil::ProjectEnclosingClippedRect(
+      from_screen, gfx::Rect(layer->layer_tree_host()->device_viewport_size()));
+  visible_layer_rect.Intersect(viewport_rect);
   switch (mode_) {
     case FIXED_SIZE: {
       // Invalidation with a random position and fixed size.
@@ -105,7 +107,7 @@
     }
     case VIEWPORT: {
       // Invalidate entire viewport.
-      layer->SetNeedsDisplayRect(layer->visible_layer_rect_for_testing());
+      layer->SetNeedsDisplayRect(visible_layer_rect);
       break;
     }
   }