From: Jason W. <gi...@ma...> - 2003-07-01 15:19:19
|
Eric Botcazou wrote: >>Question remains if that is what we want, of course. > > > Page flipping is supposed to wait for the vertical blank so that it should > never flicker, there is no discussion on that. But we should certainly > provide a mean to disable it. > Could someone please tell me why vsync is called explictly in show_video_bitmap? I am curious. I thought the whole point of page flipping in triple buffering is that it is supported in hardware so that when you flipped the page you didn't have to wait before you could start writing to the back buffer? The hardware waits for the vsync asyncronously to your application. If you have to use vsync and block the process, then I can see how framerate is cut in half. If generating a frame takes 1.1 refreshes, you have to vsync to pageflip, which will block you for 0.9 refreshes, and your framerate will be half the refresh rate. How does this differ, then, from double-buffering? And then what is the point of triple buffering if you must wait for vsync? Waiting for vsync on page flip makes a lot of sense. This is how it's supposed to work. If you are using triple buffering, you render your first frame and switch to it. If you render the second frame and request a flip it should wait no time at all. Then when you finish the third frame and the first frame still isn't done (note this means you are generating frames at 3x refresh), it should block for vsync only then. Is this not the behaviour of OpenGL when vsync is on? You don't have to wait for vsync unless you generate frames faster than you can display them. Gillius |