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?
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.