So, the first point - provide on client request only - can be more easily handled further up the stack.
The second point - that there might be some future Display that can't provide vsync events information but *can* tell you frame timing - is already going to have a bad time in Mir. If we can't detect frames our compositor is going to spin at 100%, and if we provide a synthetic vsync then... we've got vsync events ☺.
So, the first point - provide on client request only - can be more easily handled further up the stack.
The second point - that there might be some future Display that can't provide vsync events information but *can* tell you frame timing - is already going to have a bad time in Mir. If we can't detect frames our compositor is going to spin at 100%, and if we provide a synthetic vsync then... we've got vsync events ☺.