DisplayLink の描画呼び出しは基本的に 1/60 sec 単位で行われます。
わかりやすく言えば WaitVSync です。
処理が落ちが発生した場合も、次の VSync 相当のタイミングを待ってから
呼び出しが行われています。
そのため問題となっていたのが frameInterval を 2に設定した場合で、
当初この API で呼ばれるタイミングを勘違いしていました。
(A) (B) (C) (D)
--------------------------------------------
frame 0 draw draw draw draw
frame 1
frame 2 draw
frame 3 draw draw
frame 4 draw draw draw
frame 5 draw
frame 6 draw darw darw
(A) = 処理落ちなし
(B) = 処理落ちした場合の実際の動作
(C)/(D) = これは間違い
基本的に 2 frame に一度呼ばれますが、処理落ちが発生した場合は
次の VSync 相当のタイミングで呼ばれます。
上の (B) の動作となり、(C) や (D) にはならないようです。