Disable region copy on ARM since it isn't supported

Copying a buffer region isn't supported on ARM due to a driver bug.
Until support is landed we can do a full copy to make sure that the
buffers are in a consistent state.

BUG=chrome-os-partner:36554, 511446
TEST=Ran on daisy, peach_pi and rockchip to verify that the device
startup up and produces frames.

Review URL: https://codereview.chromium.org/1359423002

Cr-Commit-Position: refs/heads/master@{#350376}
(cherry picked from commit b76c26887404294611d9ab3b03913fd52d0eb289)

[Ozone-DRM] Modeset when re-mapping windows to controllers

This fixes an issue where the surface associated with a window thinks it
can submit a buffer, but the controller is waiting for a page flip event
to finish. This issue is triggered in the following scenario:

- surface1 mapped to display1
- surface2 mapped to display2
- surface2 page flips a buffer on display2
- surface1 is re-mapped to display2
- surface2 is re-mapped to display1
- surface1 had no pending buffers, so it thinks it is fine to schedule a
  page flip on display2
- display2 fails to page flip since it is still waiting for the callback
  from surface2

We had considered using a queue internally, though that would have
complicated the logic. Since changing display configuration is a rare
event we decided it would be simpler to just modeset at this point even
if modesetting would take longer.

BUG=511446, 529806

Review URL: https://codereview.chromium.org/1327413003

Cr-Commit-Position: refs/heads/master@{#348496}
(cherry picked from commit 569ff0f367864bc65b8abaaab4dec1e57d25ac93)

Force swap buffers when re-creating the buffers

The SwapResult provides a way to signal when the buffers are no longer
adequate and need to be re-allocated. Currently the surfaceless
implementation of the GpuBrowserCompositorOutputSurface will re-allocate
the buffers, however it doesn't swap again. Since the previous buffer
was rejected the display is showing an old frame.

BUG=511446
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1327343003

Cr-Commit-Position: refs/heads/master@{#348246}
(cherry picked from commit 61df9d531b103895877d163c1635bac16d686952)

Force buffer re-allocation when the backing display changes

When the user changes the primary display and both displays have the
same resolution, the buffers are never re-allocated. It is then possible
to encounter the following scenario:

Surface 1 scans out on display A and surface 2 scans out on display B.
When surface 1 moves to display B and surface 2 to display A there is no
guarantee that either surface will force re-draws. If, say, surface 1
starts page flipping it is possible that it would start re-using the
buffer currently shown on display A which could cause the GPU process to
wait for display A to release the buffer. At this point the GPU main
thread is blocked waiting without a possibility to progress since
surface 2 cannot use the GPU to update. Eventually the watchdog kills
the GPU process which causes the surfaces to be reallocated and progress
to continue.

BUG=511446

Review URL: https://codereview.chromium.org/1334483002

Cr-Commit-Position: refs/heads/master@{#347933}
(cherry picked from commit 5bfd1d7ea19dae7cca921afa01cb0913d99514c0)

Review URL: https://codereview.chromium.org/1370233003 .

Cr-Commit-Position: refs/branch-heads/2454@{#503}
Cr-Branched-From: 12bfc3360892ec53cd00fc239a47e5298beb063b-refs/heads/master@{#338390}
9 files changed