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}