SDL_RenderPresent behaviour with SDL_RENDERER_PRESENTVSYNC

What is the behavior of SDL_RenderPresent when using SDL_RENDERER_PRESENTVSYNC? Will the call block until the next refresh rate, or will it push the frame and return and then the frame will be presented at the next refresh rate?

If it is the latter, is it OK to call SDL_RenderPresent more than once within one refresh rate? And in this case I guess that only the last frame will be presented and all others just overwritten/ignored?

Yes, in my experience it will block, although probably you are not supposed to rely on that.

If you force triple buffering from your graphics driver it might not block. Not sure though.

Possibly, although something must block eventually otherwise nothing limits the frame rate of your app! There’s a related OpenGL question here which implies that if SDL_RenderPresent doesn’t block a subsequent rendering call will, because the buffer it needs to render into is locked.