Bad frame pacing with Windowed/FS Windowed Modes
thebrokepope opened this issue · 3 comments
Not sure what can realistically be done about this issue, but thought I would write about it here in case people are noticing they are getting bad frame pacing and want to fix it.
According to Kal (SpecialK Dev) DX9 only engages Vsync when in Fullscreen mode. As a result, when using a windowed/FS windowed mode, there is no Vsync, and the game's in built 60fps limiter with no v sync creates visible stutter. There are a couple of solutions to this:
- Use Fullscreen mode. You might have to restart your game after selecting Fullscreen mode. You will need to make sure your display is in 60hz mode, or else is using a fractional v sync setting set in your graphics driver that matches 60hz.
- Use VRR. I also could only get VRR to activate in Fullscreen mode. Again, the game's inbuilt frame limiter is creating stutter which translates to minor VRR flicker. You can fix this using the SpecialK frame limiter set to a value like 59.90, which will override the game's limiter.
Again, not sure what can be done about this, since it might just be a DX9 issue more than anything else. Maybe the game's inbuilt limiter could be improved? But at the moment I would only recommend playing the game in Fullscreen mode.
Thanks!
@thebrokepope, I am not sure if I can reproduce the issues you are mentioning. However, I did add some frame limiters to make the frame count equal exactly 59.94 or 29.97, the exact NTSC values. Note: it may drop lower than that if your GPU/CPU cannot handle the load.
Here is the updated build: d3d8.zip
Please let me know when you test this how it works for you.
Hi, thanks for your reply!
Sorry you couldn't replicate what I'm talking about. It's possible there is something going on that I haven't accounted for, but I will say people can have different subjective experiences of frame pacing issues. For me, I'm playing the game on a large display and in a dark room, so any issues are going to be magnified. Bad frame pacing of this type is also not something which can be picked up with frametime graphs on programs like RTSS or SpecialK. For an objective test you would need to count frames from a capture of the video output, like they do on Digital Foundry.
As for the new build, I tried it and it perhaps helps the framepacing a little with Vsync and VRR off. There is still visible judder. As far as I'm aware there isn't really a way to get smooth frame pacing on fixed refresh displays without V sync, which is why it's a problem that Vsync can't be used in windowed/FS windowed modes.
I also tried the new build with VRR enabled, and I wasn't seeing any VRR flicker like I was before! So that could be an improvement, but I haven't tested in a totally dark room yet to see if it's really not an issue anymore.
@thebrokepope, thanks for testing this. It sounds like that build is an improvement. In the previous build I added the limiter before the call to Present. However, for this build I added the limiter after the call to Present.
Can you test this build and let me know if it is better or worse than the last build? d3d8.zip