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) にはならないようです。