https://developer.apple.com/videos/play/tech-talks/10855/
APP과 유저의 interaction 사이에 scroll이나 animation이 두개 이상 프레임에서 같은 위치에 존재하는 것.
발생하는 이유: Render loop이 frame안에서 끝나지 못했을 경우 발생.
iphone → 16ms 마다 다른 화면을 보여준다.
VSYNC: 스크린의 화면이 변경되는 순간을 말함. 16ms 마다 VSYNC 발생
App에서 user action 감지 - 첫번째 frame
Render server에서 감지, UI가 여기서 변경 - 2번째 frame
다음 VSYNC에 commit 된 변경을 받아 render prepare phase에 들어감
GPU에 그리기 위한 준비 과정
render execute, 내가 보여줄 final image를 GPU에 그린다.
다음 frame에서 화면에 보여짐 - 3번째 frame
GPU에 그린 화면을 사용자에게 보여주게 됨.
⇒ 즉, 유저의 반응이 화면에 보이기 까지는 2개의 frame이 필요, 이를 Double buffering이라고 말한다.
⇒ 1,2의 과정이 3개의 frame안에 일어나면 triple buffering (fallback mode)
각 render loop은 performance-sensitive / 다음 VSYNC라는 deadline이 존재
그리고 저 위의 3개의 파이프라인이 parallel하게 돈다.