This is because of the large use of getImageData()
The old path:
- data = CGContextGetData()
- copy that data into an image surface
- unpremultiply into the destination
The new path:
Snapshot()
- CGImage image = CGBitmapContextCreateImage
DataSourceSurface()
- Draw CGImage to CGBitmapContext
- CGContextGetData()
- unpremultiply into the destination
The extra CGImage is costing us a bunch of nasty vm churn.
One possible solution, would be to keep the CGContext around in the SoureSurfaceCG but that's sort of unappealing to me.