-
-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Vsync not applied with OpenGL renderer #16516
Comments
Not our bug. Please make sure to enable vsync on the driver panel. |
thanks for the info. I used default settings on nvidia panel. Setting |
What do you mean exactly by vsync working/not-working in this case btw? I mean what happens when you set it to use 3d application setting? Are you observing actual tearing? |
if in nvidia control panel I set with OpenGL renderer: with Vulkan renderer: if in nvidia control panel I set with OpenGL renderer: with Vulkan renderer: I would simply update the hint provided for |
@digant73 When you say "no vsync" what do you mean? Are you experiencing visual tearing or is it just fps exceeding the display refresh? OGL triple buffering means the display limit will be exceeded, that is by design. |
yes, I mean that I expect to see some tearing while with Just a question about the triple buffer used when Vsync is engaged, could it affect the pad response on some games? I think for example to Killzone 2 (this game has an heavy feeling of the movement compared to KZ3 on the real PS3). On RPCS3 (I always prefer to enable vsync on all games) the pad is very unresponsive (it feels like input lag is very high), Could a double buffering improve the feeling? If so, could it be possible, with a minor effort on the code, to allow on the GUI the possibility to select double or triple buffering when Vsync is engaged? |
Vulkan and OpenGL expose vsync control very differently.
We could replace the vsync toggle with a dropdown with the 3 options. For vulkan we have an option in config that controls whether to apply adaptive or strict double-buffered. Maybe OpenGL can expose this, though utility would be very limited. |
but according to what you say about Vulkan (4 modes etc.) it seems that vsync on Vulkan is always controlled by the I would clarify the
|
This is only true as long as the driver setting is not configured to override it (i.e "use 3d application setting")
Same caveat explained above. If you're still seeing tearing that's a driver bug and should be reported to NV, though chances that they'll do anything about it are very low. We've had other reports of vsync not working correctly on NVIDIA in the past but it has always been resolvable by checking driver settings. Either some override is in place or something like VRR is active. External bug already filed for like 8 years now: https://forums.developer.nvidia.com/t/vsync-behavior-vsync-is-always-adaptive/47600 And many others we closed over the years. If you wish to test if any values will work for you, toy around with this line rpcs3/rpcs3/Emu/RSX/GL/GLGSRender.cpp Line 135 in c443326
|
thanks. It is more to clarify on the GUI what you stated above. As I reported (as update) in the previous post, an hint like the following could be enough.
|
That will be great IMO so I could make some testing on games currently giving me a bad feeling |
This isn't true for other vendors. Only for nvidia because of bad OGL driver.
You need to first verify that using "1" instead of "-1" does something for your setup. If that works then I can get that done. I remember you're able to compile rpcs3, try setting swap interval to 1 on the line I pointed out earlier. If it works, I'll add the config option to switch between different vsync modes. |
Yes, for that reason I reported a general warning first and then provided the example for nvidia drivers.
Yes, I will do. How can I also force FIFO (double buffer) on Vulkan (in |
This is already implemented. Open config.yml and go to vulkan section, you'll see an option there. It's not exposed in Qt GUI |
ok made some testing with both OpenGL and Vulkan renderers. With OpenGL, using 1 (instead of -1) as in the following code:
I have no tearing (of course With Vulkan, setting to
I have a better feeling with KZ2 (less lag). It is very similar to what I see in the PS3. Tested also at 30fps as in the console to compare apple with apple. Better feeling (a bit more responsive) also on KZ3 and Resistance series. Tested many times switching between one mode to another. I do not see any difference on performance |
EDIT: made other testing on Vulkan renderer. Maybe a placebo effect with previous testing. |
The way rpcs3 is architected, the number of buffers doesn't matter. Pacing is done driver side. Number of buffers only affects internal behavior (i.e whether we pause RSX emulation to wait for host). If you only have 2 buffers there is a big pause mid-frame during async flip, no real changes expected otherwise other than performance dropping (this was the default initially). |
What I can do for VK is add a config variable in yml to limit number of buffers. I'm not sure if it will really reduce lag or not, but maybe someone finds it useful. |
thanks for the clarifications. I think that the dropdown for vsync is a better choice than the current checkbox only.
My previous post was related to what I saw in |
Only possible values with rpcs3 are:
|
they are good to me IMO. |
Quick summary
Not a regression (I see it also in old releases).
The
Vsync
option on theGPU
tab is not applied when using OpenGL renderer. It only works with Vulkan rendererDetails
No response
Attach a log file
RPCS3.log.gz
Attach capture files for visual issues
No response
System configuration
No response
Other details
No response
The text was updated successfully, but these errors were encountered: