Properly schedule repaint with premature presentation timestamps
The last presentation timestamp might be in the future by a couple of hundred microseconds.
This may break timestamp aligning code because it assumes that the last presentation timestamp is less or equal to the current time.
In order to properly handle this case, we have to first compute the next expected presentation timestamp by advancing the last presentation timestamp by the amount of vblank interval. If that fails, we can safely resort to aligning timestamps.
Edited by Vlad Zahorodnii