Hey I have a problem. When I use vsync in SFML window on amd hd 6870 i get 97-99% gpu usage @60 fps, and without vsync i have like 30% gpu usage @ 300 fps. The problem exist on both pre compiled sfml 2.0 version and latest git compiled few days ago. It happens on both newest drivers and those 1 year old. What's more, it happens both on windows 32 bit and linux 64 bit. Of course the problem only exist with SFML apps, in games like guild wars or any other when i enable vsync the gpu usage is low as it should be (you can check usage in ati catalyst control center/afterburner/gpu-z).
IMPORTANT THING: When I used nvidia gts 450 gpu I didn't have any problem at all (I mean, with vsync enabled in that 2d sfml application gpu usage was about 15%).
So here's the code that is enough to make it happen:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "VSYNC AMD BUG");
window.setVerticalSyncEnabled(true);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.display();
}
return 0;
}
And thats enough. At first i thought it was something with my drawing code, but the bug exist even on empty window with vsync. When you compile it without vsync, gpu usage is 30%. Enable vsync and boom 99% is used all the time.
And please remember, this is only amd related bug (well, hd 6xxx for sure, i don't know about others) and I think this bug may be crucial as enabling vsync in small 2d game causes powerful gpu to run into high temps (and despite visual advantages of vsync, the another purpose is just to reduce fps = reduce gpu usage = reduce temps and power consumption and the problem is that using sfml's vsync on amd card does exactly the opposite, because without vsync the gpu usage is 3x lower than with vsync enabled).
What's more, when I once run pure opengl app with vsync on my amd 6870, gpu usage was about 35% I think, so it may be something related to how SFML implements OpenGL vsync. It also probably is in some way related to amd catalyst drivers (as SFML vsync works as it should on nvidia cards), but as I said i seen opengl application with vsync where the problem wasn't present on amd card, so maybe there is another possible way of implementating vsync in opengl that will work flawlessy on both amd and nvidia.
Thanks for help!