Make cross-process CALayers work on Mac
Add a header file for the remote layer API and a helper function to
determine if it is supported at runtime.
Add a mechanism for disambiguating if a "surface handle" refers to an
IOSurfaceID or a CAContextID (the thing that is passed across processes
to do cross-process CALayer drawing).
Add support in RenderWidgetHostViewMac to put in a CALayerHost from
another process's CAContextID. In the process of this, make the root
CALayer hanging off of the RenderWidgetHostViewMac have flipped
geometry, and update LayoutLayers to take this into account.
This is working surprisingly well, but needs a bit more work before it
can be turned on. We still need to:
* exert GPU back-pressure from the GPU process'
-[ImageTransportLayer drawInCGLContext] function (it's an open loop
now).
* use the isAsynchronous property to make 60fps animation not jerky.
* ensure that these resources' lifetimes are being managed reasonably
and aren't eating tons of GPU
* ensure that not rounding texture sizes to the nearest 64 pixels (as is
done for the IOSurface scheme) isn't causing fragmentation.
BUG=312462
Review URL: https://codereview.chromium.org/
347653005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@279200 0039d316-1c4b-4281-b951-d872f2087c98