Jump to content

Framerate Limit Capped at 60 FPS


Spigotron

Recommended Posts

24 minutes ago, DoubleYou said:

Just enable the OSD for SSE Display Tweaks. Capture with Nvidia Geforce Experience Overlay.

I was thinking more on the route of monitoring with file, like FRAPS did. I just purchased a license for FPS Monitor.

23 minutes ago, z929669 said:

Doh! Yeah, so my bad.... I was just happy to understand why he wasn't limited by hardware composition

I don't see any issues with SSE Display Tweaks INI or game INI. I forget if frame limiter is set the skyrimprefs or skyrim.ini. If those are OK, then I suspect its GFX display settings somewhere. I don't know NVIDIA so well, so you guys will know more about that.

Graphics settings for this is in my post (image of of Inspector).

Link to comment
Share on other sites

  • Replies 40
  • Created
  • Last Reply

Top Posters In This Topic

I fixed it:

The Elder Scrolls V  Skyrim Special Edition Screenshot 2022.03.19 - 17.56.46.34.png

Problem was Nvidia Control Panel is junk. I updated the drivers last time and reset all the settings, and evidently it messed up the settings I use for GSync to set it to only work in Fullscreen mode.

Correct settings for GSync + VSync in windowed mode:

image.png

Correct settings for GSync uncapped fps in windowed mode:

image.png

Also, my refresh rate was wrong on the monitor settings. It was set to 60 HZ when it was supposed to be set to 75 HZ.

Link to comment
Share on other sites

17 minutes ago, DoubleYou said:

I fixed it:

The Elder Scrolls V  Skyrim Special Edition Screenshot 2022.03.19 - 17.56.46.34.png

Problem was Nvidia Control Panel is junk. I updated the drivers last time and reset all the settings, and evidently it messed up the settings I use for GSync to set it to only work in Fullscreen mode.

Correct settings for GSync + VSync in windowed mode:

image.png

Correct settings for GSync uncapped fps in windowed mode:

image.png

Also, my refresh rate was wrong on the monitor settings. It was set to 60 HZ when it was supposed to be set to 75 HZ.

Nice. So what have we learned? So far, only that drivers/driver settings are important? Why isn't Z able to? AMD vs Nvidia?

Link to comment
Share on other sites

1 hour ago, TechAngel85 said:

Nice. So what have we learned? So far, only that drivers/driver settings are important? Why isn't Z able to? AMD vs Nvidia?

I think we just learned NVidia settings are confusing and counter-intuitive? :wallbash:

Link to comment
Share on other sites

2 hours ago, Greg said:

I think we just learned NVidia settings are confusing and counter-intuitive? :wallbash:

Yeah, I was assuming it was the NVIDIA display GFX settings.

4 hours ago, DoubleYou said:

I fixed it:

The Elder Scrolls V  Skyrim Special Edition Screenshot 2022.03.19 - 17.56.46.34.png

Problem was Nvidia Control Panel is junk. I updated the drivers last time and reset all the settings, and evidently it messed up the settings I use for GSync to set it to only work in Fullscreen mode.

Correct settings for GSync + VSync in windowed mode:

image.png

Correct settings for GSync uncapped fps in windowed mode:

image.png

Also, my refresh rate was wrong on the monitor settings. It was set to 60 HZ when it was supposed to be set to 75 HZ.

Glad you got it figured out. Looks like we have some recommendations in the making.

Link to comment
Share on other sites

What we learned is that in both DY and Tech cases, specific nVidia driver-level settings were used, making the SkyrimPrefs.ini and SSEDisplayTweaks.ini configuration settings irrelevant and circumventing the instructions given by the guide, or even doing the opposite of the instructions with G-Sync.

You could either try to provide instructions and support to uncap framerates in Borderless Fullscreen Window for every combination of GPU, monitor, driver, and OS features. Good luck with that...

Or simply configure the game to run in Exclusive Fullscreen mode and turn off V-Sync via BethINI (SkyrimPrefs.ini) or SSEDisplayTweaks.ini settings, which will work in every case - assuming driver settings are at default, i.e. "Let application decide".

I don't think enabling or disabling G-Sync/FreeSync/Adaptive Sync/Variable Refresh Rate actually matters: VRR doesn't work if the framerate exceeds the supported frequency range due to V-Sync being off. It doesn't limit the framerate, it simply synchronizes the monitor with the GPU. If the monitor can't keep up, then it can't keep up, the GPU still outputs full throttle. V-Sync does the opposite: it synchronizes the GPU with the monitor, so the GPU can only output as fast as the monitor can accept.

Edit: Adaptive Sync could be confused with nVidia's 'Adaptive V-Sync' feature which is something else unrelated to VRR display :crying:

Link to comment
Share on other sites

Looks like there is a better way after all that I'd missed and mistakenly thought would require specific hardware support.

V-Sync can be turned off and framerate can be uncapped in Borderless Fullscreen Window mode simply with SSE Display Tweaks' configuration. Both settings are under the [Render] section of SSEDisplayTweaks.ini:

  • Change EnableVSync from true to false:
## Enable/disable VSync.
#
#  IMPORTANT: If you're using borderless mode and want to disable VSync, EnableTearing must be set to true.
#
#  Note: This option overrides 'iVSyncPresentInterval' in SkyrimPrefs.ini
#
EnableVSync=false
  • Change EnableTearing from false to true:
## Required for disabling V-Sync in borderless/windowed mode. Only works with a flip SwapEffect option.
#
#  More info: https://docs.microsoft.com/en-us/windows/win32/direct3ddxgi/variable-refresh-rate-displays
#
#  ENB WARNING: Disable this if you have ForceVSync set to true in enblocal.ini, otherwise your game might freeze on startup.
#
EnableTearing=true

 

You can try it if you like. It works for me. It should work with any GPU + driver combo that supports DirectX 11 or 12, and on Windows 10 Anniversary Update (version 1607, March 2016) Spring Creators Update (version 1803, April 2018) or later. If you'd like to test it for validation purpose, please ensure all nVidia/AMD driver settings are set to default or "application-controlled" to get the most generic non-customized setup.

The log will look something like this:

[Window] [0x4E0324] Message hook installed
[Window] [0x4E0324] Window created [Skyrim Special Edition] (0,0,1920,1200)
[Render] [D3D] Requesting mode: 1920x1200@0 | VSync: 0 | Windowed: 1
[Render] [D3D] SwapEffect: flip_discard | SwapBufferCount: 3 | Tearing: 1 | Flags: 0x00000802
[Render] [D3D] Windowed hardware composition support: no

As a simple way to check if the framerate is unlocked and V-Sync is truly disabled, you can display the Escape pause menu while in game and the FPS should quickly jump to 300 fps (or whatever FramerateLimit is set to in SSEDisplayTweaks.ini). The framerate limit setting should be higher than your monitor max refresh rate to ensure nothing else may be limiting it.

As a simple way to check if the game is in Borderless Fullscreen Window mode, you can Alt-Tab out to another smaller app window and the game should still be displayed in the background.

Why this requires a separate configuration setting that needs to be manually toggled in SSEDisplayTweaks.ini is anyone's guess, it would have been more user-friendly to infer it automatically based on the other settings. But it's there, and it does the job.

This method is better than switching to Exclusive Fullscreen mode for measuring performance because it remains in Borderless Fullscreen Window mode, while Exclusive Fullscreen doesn't have the same performance characteristics as Borderless Fullscreen Window.

Link to comment
Share on other sites

13 hours ago, Mousetick said:

Looks like there is a better way after all that I'd missed and mistakenly thought would require specific hardware support.

V-Sync can be turned off and framerate can be uncapped in Borderless Fullscreen Window mode simply with SSE Display Tweaks' configuration. Both settings are under the [Render] section of SSEDisplayTweaks.ini:

  • Change EnableVSync from true to false:

## Enable/disable VSync.
#
#  IMPORTANT: If you're using borderless mode and want to disable VSync, EnableTearing must be set to true.
#
#  Note: This option overrides 'iVSyncPresentInterval' in SkyrimPrefs.ini
#
EnableVSync=false
  • Change EnableTearing from false to true:

## Required for disabling V-Sync in borderless/windowed mode. Only works with a flip SwapEffect option.
#
#  More info: https://docs.microsoft.com/en-us/windows/win32/direct3ddxgi/variable-refresh-rate-displays
#
#  ENB WARNING: Disable this if you have ForceVSync set to true in enblocal.ini, otherwise your game might freeze on startup.
#
EnableTearing=true

 

You can try it if you like. It works for me. It should work with any GPU + driver combo that supports DirectX 11 or 12, and on Windows 10 Anniversary Update (version 1607, March 2016) Spring Creators Update (version 1803, April 2018) or later. If you'd like to test it for validation purpose, please ensure all nVidia/AMD driver settings are set to default or "application-controlled" to get the most generic non-customized setup.

The log will look something like this:


[Window] [0x4E0324] Message hook installed
[Window] [0x4E0324] Window created [Skyrim Special Edition] (0,0,1920,1200)
[Render] [D3D] Requesting mode: 1920x1200@0 | VSync: 0 | Windowed: 1
[Render] [D3D] SwapEffect: flip_discard | SwapBufferCount: 3 | Tearing: 1 | Flags: 0x00000802
[Render] [D3D] Windowed hardware composition support: no

As a simple way to check if the framerate is unlocked and V-Sync is truly disabled, you can display the Escape pause menu while in game and the FPS should quickly jump to 300 fps (or whatever FramerateLimit is set to in SSEDisplayTweaks.ini). The framerate limit setting should be higher than your monitor max refresh rate to ensure nothing else may be limiting it.

As a simple way to check if the game is in Borderless Fullscreen Window mode, you can Alt-Tab out to another smaller app window and the game should still be displayed in the background.

Why this requires a separate configuration setting that needs to be manually toggled in SSEDisplayTweaks.ini is anyone's guess, it would have been more user-friendly to infer it automatically based on the other settings. But it's there, and it does the job.

This method is better than switching to Exclusive Fullscreen mode for measuring performance because it remains in Borderless Fullscreen Window mode, while Exclusive Fullscreen doesn't have the same performance characteristics as Borderless Fullscreen Window.

So I did some testing. Log file names indicate testing params as follows:

  • amdApp: App controlled wherever possible, Freesync and proprietery functions disabled otherwise
  • amdProprietary: Freesync and proprietery functions enabled
  • stepBorderlessW: Step BethINI setup with both Windowed/Borderless toggled on
  • StepFullscreen: Step BethINI setup with both Windowed/Borderless toggled off
  • SSE Display Tweaks settings: Step recommendations but for toggling EnableTearing and/or EnableVsync as indicated
  • LimitYes/No: Whether or not my FPS is limited to monitor refresh

Additionally:

  • All other possible sources of FPS limiters or vsync disabled
  • ENB disabled on basically vanilla game so I can get max frame rates without having to do the little tricks mentioned
  • Win 10 build 21H2 (latest)

According to SSE Display Tweaks logs, my system doesn't support Windowed hardware composition; although, I do have the DWM process, and it's running (NOT shown as a service on my system. It's strictly a process and doesn't appear to be governed by any service, contrary to most recent Google search results.)

SSEDisplayTweaks-amdApp-stepBorderlessW-EnableTearingTrue-EnableVsyncFalse-LimitNo.logSSEDisplayTweaks-amdApp-stepBorderlessW-EnableTearingFalse-EnableVsyncFalse-LimitYes.logSSEDisplayTweaks-amdProprietary-StepFullscreen-EnableTearingTrue-EnableVsyncFalse-LimitNo.logSSEDisplayTweaks-amdProprietary-StepFullscreen-EnableTearingFalse-EnableVsyncTrue-LimitYes.logSSEDisplayTweaks-amdProprietary-StepFullscreen-EnableTearingFalse-EnableVsyncFalse-LimitNo.logSSEDisplayTweaks-amdProprietary-StepBorderlessW-EnableTearingTrue-EnableVsyncFalse-LimitNo.logSSEDisplayTweaks-amdApp-stepFullscreen-EnableTearingFalse-EnableVsyncFalse-LimitNo.log

As my logs show:

  • EnableTearing=True always allows me to exceed my monitor refresh rate, irrespective of window mode.
  • EnableVsync=True caps me at my monitor refresh rate, irrespective of window mode.
  • Using Windowed/Borderless mode AND EnableTearing=False EnableVsync=False also caps me at my monitor refresh rate.
  • Enabling Freesync on my system has no bearing to capping my rates. SSE Display Tweaks governs my FPS limit behavior regardless of all other variables.
  • I think further testing combinations would be redundant, as we can predict all other outcomes from the untested combinations of the testing params (I THINK).

So, I think AMD (my system) behaves as those of you using NVIDIA. It's just that my settings are a bit more intuitive.

amdProprietary settings below. amdApp is with these all disabled or under app control where possible.

image.png

So long story short, I think we can simply leave our BethINI/SSEDT recommendations in place and have users set EnableTearing=True to break FPS caps (I think that's @Mousetick's point, so my results support that). I think this is simpler than messing with BethINI configs and explaining all of that in the guide (makes sense to do so in our Dispay Settings guide though).

Let me know if I missed something though. It's a lot of info and a bit of a brain tease. Also, compare the log files in WinMerge ... I found the SwapEffect diffs interesting and don't have time to reason that out ATM.

Link to comment
Share on other sites

15 hours ago, z929669 said:

Let me know if I missed something though. It's a lot of info and a bit of a brain tease.

Thanks for all the extensive tests and the information you've gathered, that's very useful. They're in line with what would be expected.

15 hours ago, z929669 said:

So, I think AMD (my system) behaves as those of you using NVIDIA.

Actually, you and I are both using AMD :) So it would be nice if DY, Greg and Tech could test this solution on their side, since they're all using nVidia.

15 hours ago, z929669 said:

I think we can simply leave our BethINI/SSEDT recommendations in place and have users set EnableTearing=True to break FPS caps

Yes that's what I had in mind. This wouldn't change the BethINI setup part of the guide and only adds one (temporary) SSEDT configuration setting tweak to the Performance Tuning - Benchmarking Steps section of the guide. This also would also avoid going down the specific driver settings rabbit hole.

15 hours ago, z929669 said:

I found the SwapEffect diffs interesting

They're showing the different ways (in DirectX lingo) the game engine's graphics buffers are handled and sent to the GPU. "discard" is used in Exclusive Fullscreen mode where the buffer is copied directly to the GPU, "flip_xxxx" is used in Borderless Fullscreen Window mode where the buffer is shared with Windows' DWM which can "compose" it with additional windows (like overlay widgets such as media volume control, game bar, notifications and so on).

More details and other interesting tidbits in relatively plain English: SwapChain Science

15 hours ago, z929669 said:

my system doesn't support Windowed hardware composition

It's fine, it was my mistake to mention it initially as I misunderstood its significance. We can ignore it I think. My (limited) understanding is that it allows for offloading some of the DWM work to the GPU and may be necessary to fully support fancy scenarios like using Borderless Fullscreen Window at a different resolution than Windows' desktop resolution.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines, Privacy Policy, and Terms of Use.