set up the properties of the layer. → Display: Backing images are drawn (drawRect(_:) or drawLayer(_:inContext:)) → Prepare: CD gets ready to send the animation data to the render server (Backboard). → Commit: Final phase where CA packages up and sends the layers and animation properties.
to form render tree → For each frame of the animation: → Calculates the intermediate values for all of the layer properties → Renders the visible triangles to the screen (GPU)
much geometry → Too much overdraw--caused by overlapping semitransparent layers (finite fill-rate). → Offscreen drawing--occurs when an effect cannot be achieved by directly drawing onto the screen (rounded corners, layer masks, etc.) → Too-large images
Layout calculations for complex view hierarchies → Lazy view loading (e.g. loading from a nib file or Storyboard) → Core Graphics drawing (drawRect(_:)). Backing image is created in memory with the same size of the view. → Image decompression
(common source of overdraw) → Color hits green and misses red (when using shouldRasterize) → Color copied images (highlights images that have to be copied to the render server)
immediately) → Color misaligned images (nonintegral coordinates) → Color offscreen-rendered yellow → Color OpenGL Fast Path Blue → Flash updates regions (redrawn content)