Assuming the overlay presentation queue is being used, then what happens that every time the display engine enters vblank, it looks at the timestamp of the next frame and compares it to the current time. If the next frame has a timestamp in the past, it flips to it. Otherwise, it waits until the next vblank. If you’re concerned about measuring the latency in realtime, you can call VdpPresentationQueueQuerySurfaceStatus to query the time that presentation started and compare it to VdpPresentationQueueGetTime to see how far ahead of the display you are.
If you’re worried about variable processing time for your video frames, another option would be to use OpenGL with a G-SYNC capable display. That allows the display to respond with a (mostly) fixed latency after your application calls glXSwapBuffers(). But that requires a G-SYNC display and it sounds like you already have a particular HDMI sink in mind.