title: Understanding necessity of Android VSYNC signals
body: <p>I'm trying to get a better understanding of the Android display subsystem, but one item that's still confusing to me is how VSYNC signals are handled, and why so many exist in the first place.</p>
  
  <p>Android is designed to use VSYNC at its core, but there are multiple VSYNC signals that it employs. Via <a href="https://source.android.com/devices/graphics/implement.html">https://source.android.com/devices/graphics/implement.html</a> in the "VSYNC Offset" section, there is a flow diagram which diagrams three VSYNC signals: HW_VSYNC_0, VSYNC, and SF-VSYNC. I understand that HW_VSYNC is used to update the timing in DispSync, and that VSYNC and SF-VSYNC are used by the apps and surfaceflinger, but why are these individual signals necessary at all? Furthermore, how do the offsets impact these signals? Is there a timing diagram available anywhere which better explains this?</p>
  
  <p>Thanks for any help you can offer.</p>