ProjectionSpace fixes for caching:

* When feeding back into client composition, feed back the framebuffer
projection space instead of a projection space using mBounds as the
content rectangle. Otherwise, this tries to project the entire cached
set onto the entirety of the display, which is incorrect. Instead, the
cached set needs to be projected onto the displayFrame for the
overridden layer.
* When rendering the cached set and computing the physicalDisplay
rectangle, instead of passing in the framebuffer space bounds offset by
mBounds, pass in the framebuffer space content offset by mBounds.
Otherwise, this breaks simulated secondary displays: simulated secondary
displays works by projecting the layer stack onto a rectangle in the
middle of surface that is much narrower than the surface bounds. If the
framebuffer bounds are used to compute the physicalDisplay rectangle and
the cached set covers the entire secondary display, then when offset by
mBounds the cached set goes offscreen. The correct rectangle to use is
the framebuffer content rectangle.

Bug: 185398025
Test: libcompositionengine_test
Test: Simulated secondary displays
Test: Wallpaper picker doesn't suddenly resize when pulling down the
notification shade

Change-Id: Ie7119bc42db4887b448673c0ab11fee24db664c5
4 files changed