Optimize overdraw on partially overlapped windows

Overdraw means that one single pixel is drawn more than once, this can
slow down our chrome browser performance; and this causes our browser
to use more power to run. In this patch, a new draw occlusion tracker
to remove DrawQuads that are not shown on the screen from the
CompositorFrame is added.
For detailed description:
https://docs.google.com/document/d/1skSwTc7fDr_O_pYz1mH4hV7QtMkzAOhhKf5Qr4FQx2I/edit

TEST=display_unittest.cc

Bug: 672929
Change-Id: I910597230c432450eabbef8166cab2cb9d3925ac
Reviewed-on: https://chromium-review.googlesource.com/711391
Commit-Queue: Yi Xu <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Reviewed-by: Ilya Sherman <[email protected]>
Reviewed-by: danakj <[email protected]>
Cr-Commit-Position: refs/heads/master@{#510942}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 5ba50439..a6f8695f 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1241,6 +1241,9 @@
     {"show-overdraw-feedback", flag_descriptions::kShowOverdrawFeedbackName,
      flag_descriptions::kShowOverdrawFeedbackDescription, kOsAll,
      SINGLE_VALUE_TYPE(switches::kShowOverdrawFeedback)},
+    {"enable-draw-occlusion", flag_descriptions::kEnableDrawOcclusionName,
+     flag_descriptions::kEnableDrawOcclusionDescription, kOsAll,
+     SINGLE_VALUE_TYPE(switches::kShowOverdrawFeedback)},
     {"ui-disable-partial-swap", flag_descriptions::kUiPartialSwapName,
      flag_descriptions::kUiPartialSwapDescription, kOsAll,
      SINGLE_DISABLE_VALUE_TYPE(switches::kUIDisablePartialSwap)},