Why does "Ultra Low Latency" mode fix stuttering in some games? (Ryse Son of Rome for example)

Discussion in 'Videocards - NVIDIA GeForce Drivers Section' started by BlindBison, May 30, 2020.

  1. aufkrawall2

    aufkrawall2 Master Guru

    Messages:
    772
    Likes Received:
    106
    GPU:
    6800 reference UV
    You can't get rid of LFC when range is >=2x, no matter what. :)
    You'd have to cripple the range via custom EDID to see that behavior.

    Edit: I can't recall though it if also happens with Vulkan/D3D12. It definitely does with D3D11.
     
  2. PrMinisterGR

    PrMinisterGR Ancient Guru

    Messages:
    7,670
    Likes Received:
    591
    GPU:
    Inno3D RTX 3090
    You guys think that maybe it's a good idea to set Low Latency to Low in the Global Profile?
     
  3. HeavyHemi

    HeavyHemi Ancient Guru

    Messages:
    6,954
    Likes Received:
    959
    GPU:
    GTX1080Ti
    It's rarely ever a good idea to randomly make a global change. So I'd say maybe, it's a bad idea. However, since we have no idea why you're considering it and on what basis, maybe it is. :confused:
     
  4. PrMinisterGR

    PrMinisterGR Ancient Guru

    Messages:
    7,670
    Likes Received:
    591
    GPU:
    Inno3D RTX 3090
    It seems like setting the pre rendered frames to one is a good call in general.
     

  5. HeavyHemi

    HeavyHemi Ancient Guru

    Messages:
    6,954
    Likes Received:
    959
    GPU:
    GTX1080Ti
    BlindBison likes this.
  6. AsiJu

    AsiJu Ancient Guru

    Messages:
    6,978
    Likes Received:
    1,993
    GPU:
    MSI RTX 2070 Armor
    You can try for sure.

    It should work in general but some games can have issues with other than default value.
    Also if you're CPU capped in a game the default value / off can help maintain more stable framerate.

    I have Global set to Off but I set it to On or Ultra on every game that works well with LLM, meaning most.
    Note though that Global On applies it to everything meaning apps like browsers etc.
    Shouldn't matter but worth keeping in mind if you have issues afterwards.

    The setting has no effect on DX12 or Vulkan games though as these handle frame composition themselves.
     
    Last edited: May 31, 2020
  7. JonasBeckman

    JonasBeckman Ancient Guru

    Messages:
    17,437
    Likes Received:
    2,795
    GPU:
    MSI 6800 "Vanilla"
    Something like Afterburner with Riva Tuner or other tweaks to D3D and usage of pre-rendered frames, buffers and the usage of synchronization with flip model support and you could probably cut the "chain" and resulting latency nicely. Some games use buffering or other things or expert certain values here like enforcing triple buffering and you have an extra back buffer and latency to contend with so yeah global is probably not a good thing but per-profile tweaking via the drivers, software to improve framerate limiting or other overrides and you could get pretty good results and a nice smooth monitored frame time graph.


    Some games also get a bit "optimistic" and use certain earlier but still common practices.
    https://cookieplmonster.github.io/2020/05/16/silentpatch-wonderful-101/
    https://cookieplmonster.github.io/2018/08/07/high-resolution-timers-and-uptime-headaches/

    Like sleeping the main render thread setting it to a 1ms value and oh look at that Windows is being a bit lax in what the actual behavior and results end up as. :D
    DXVK and these sorts of fan patches give a good insight into a number of problematic usage behaviors and also problematic incorrect documentation on best practices which naturally has less than ideal outcomes for smoothness, input latency and overall framerate and then add to that timer precision errors and more.

    Can't speak for Cry Engine in particular or Ryse but the short of it is that it gets complicated fast and some of these issues are bothersome to try and resolve if the developers don't patch it or change their ways.
    (The Wondeful 101 issue in the above example is almost identical to the problem in Metal Gear Rising Revengeance years ago handled by the same team so yeah they're still doing that same practice and getting the same issues from it.)


    EDIT: And it's a good thing (When it does work as expected.) that the display drivers do have some means to try and improve some of this even if coding practices on the game side might not always be ideal it can still help somewhat. :)
     
  8. janos666

    janos666 Master Guru

    Messages:
    995
    Likes Received:
    159
    GPU:
    MSI RTX3080 10Gb
    Hmm. Would you by any chance know if a Mantle->Vulkan wrapper existed? It would be interesting to try those few Mantle supported games on Geforce cards today. (Although the last version of DAI tended to run better with DX11 than Mantle on my old RX290. And nVidia always had much better DX11 drivers, especially compared to those old AMD drivers which were really bad back then. Only the early game versions worked better with Mantle before patches improved the DX11 mode both in terms of glitch fixes and performance/stability. I think the Mantle render path was abandoned since the visual glithes weren't fixed for Mantle either.)

    What's so wrong about summarizing your findings after asking for advice? o_O

    I think it's a matter of practicality and convenience. If you want this set for >90% of applications it's probably better to set globally and then modify those few profiles which you want to set back to default rather than modifying tens of profiles individually (and always keep in mind to configure the profile of any newly installed applications).

    I personally have LLM set to Ultra globally and have no issues with any application which could be traced back to this, so I don't think it's stupid. Although I also think it's irrelevant/useless for many applications though. Applications could override the driver queue settings before this new-old option (re-)appeared in NVCP (with the Ultra addition), so if something was prone to queue settings, it's probably asking for a specific value anyway.
     
    Last edited: May 31, 2020
    AsiJu likes this.
  9. JonasBeckman

    JonasBeckman Ancient Guru

    Messages:
    17,437
    Likes Received:
    2,795
    GPU:
    MSI 6800 "Vanilla"
    Far as I know there's no Mantle wrapper as the API was very short lived and AMD mostly phased it out from their drivers and support for the handful of games that saw a implementation before the work with D3D12 and Vulkan ended up becoming the path for low level graphics API's instead. :)

    From my understanding both were also very close to identical to Mantle initially and even one another though by this point through various updates and expanded feature sets I expect there to be a few more differences although the core might still be somewhat similar other than some naming changes.

    You'd need a SDK and some documentation and AMD far as I know kept it fairly private and worked directly with some developer studios they had closer ties to and so there's little to work with and the driver implementation is also diminished if not non-existent entirely in newer GPU's now although it doesn't entirely stop reverse engineering I suppose but it makes it complicated and slows things down.


    NVIDIA overhauling their D3D11 driver with well I forgot the exact public driver release that added it but that should also cover for a lot of the early gains and focus on what AMD lacked like still a heavily single threaded driver and missing some of the D3D11 optional multi threading features. Draw call benefits and other enhancements are a bigger thing now in current games than some years back too though far as I know AMD had problems with data compression (Improved by this point though.) and culling and discarding of data. (Also improved though could be better compared to NVIDIA far as I know though Navi has further enhancements here I believe.)


    Vulkan and DirectX 12 setting some optional bits as standard does more too just that the driver situation and the game implementation give rise to more complications and issues if anything goes wrong, crashes and sometimes other issues might require a patch and not something that can be easily worked around from the driver side and much more same as all these problem reports on D3D9 to D3D11 but dialed up and made more complicated much as there's benefits too but it'll take time for these little bumps to be smoothed over and resolved.

    Windows 7 also going end of life could also see more functions from Windows 8 and newer as a base improving stuff a bit moving beyond D3D11.1 to newer minimum standards and features but we'll see. DirectX 11 isn't going anywhere though and D3D12 and Vulkan will take a bit of time to see more of a default API implementation and less hiccups I expect but it's improved a bit already. :)
     
  10. PrMinisterGR

    PrMinisterGR Ancient Guru

    Messages:
    7,670
    Likes Received:
    591
    GPU:
    Inno3D RTX 3090
    I mostly play at 1440p with a 1070 and a 2600k@4.5GHz, so I guess I'm GPU limited most of the time. You have a point there about other games I guess.
     

  11. janos666

    janos666 Master Guru

    Messages:
    995
    Likes Received:
    159
    GPU:
    MSI RTX3080 10Gb
    I think you should consider a CPU upgrade. A 2500K@4.4 wasn't enough for me when paired with either a 290X or a GTX1070 (especially Frostbine3 games could run at quasi-constant near-100% CPU utilization). The nVidia driver is better but the GPU is also faster. The upgrade to a 8600K@4.9 was notable even for 60Hz, let alone 120Hz. Some Assassin's Creed games can run at mixed-limit (almost 100% utilization on both the CPU and the GPU at the same time) with this same 8600K and an RTX2060 as well. Although regular V-Sync can mask some of this but I usually went with FastSync before G-Sync. I would probably go for a 8-core Zen2 if I had to make the purchases today (but at least for a second-hand 8600K which is still adequate for me today).
     
  12. PrMinisterGR

    PrMinisterGR Ancient Guru

    Messages:
    7,670
    Likes Received:
    591
    GPU:
    Inno3D RTX 3090
    Well, if I consider a CPU upgrade right now, I have to change pretty much everything on my system anyway. Like a lot of other people, I'm on the long wait for Zen3/RDNA2.0/Ampere.
     
  13. janos666

    janos666 Master Guru

    Messages:
    995
    Likes Received:
    159
    GPU:
    MSI RTX3080 10Gb
    I kept the 2500K around for too long (late 2016) for the same reason but the 6-core CoffeeLake was "good enough".
    Why not wait for Zen4 then? Zen3 will probably be a small incremental step and the last CPU for the same motherboard socket whereas Zen4 will be the first for the same socket (and probably a bigger architectural step).
     
  14. PrMinisterGR

    PrMinisterGR Ancient Guru

    Messages:
    7,670
    Likes Received:
    591
    GPU:
    Inno3D RTX 3090
    I think that the unified L2 is a big deal, and the rest of the platform will be mature by then. I don't want to go full on experimental later.
     
  15. JonasBeckman

    JonasBeckman Ancient Guru

    Messages:
    17,437
    Likes Received:
    2,795
    GPU:
    MSI 6800 "Vanilla"
    Higher infinity fabric maximum speed and likely other memory improvements before going DDR5 possibly tweaks to the chipset and other tuning since the X570's and what else the 4000's could have and Zen3 on the CPU side.
    Overall CPU performance gain itself sounds good from what's rumored and then coupled with this and yeah if it can work you get some nice benefits on memory and infinity fabric coupling and resulting performance and latency.

    Newer high-speed SSD's on PCI-E 4.0 (Costly though.) plus what's new from NVIDIA Ampere it's not a bad pick far as I can see and would build on existing tech though with initial hiccups still possible such as Zen2 and TR4 quirks although newer AGESA and Windows 10 updates and bios improvements when available (MSI seems to be doing incredibly well here.) has slowly worked out a major amount of these problems coupled with enhancements on the chipset driver side of things from AMD. :)


    EDIT: Some testing required though and the usual motherboard variance and build quality and all that, DDR4 and XMP on AMD is better as is support for other configurations of single or dual rank and 16, 32 or even 64 GB sticks of either dual or four slots across dual channel configuration unlike earlier.

    Variance in bios defaults and compatibility and well it's business as usual, nothing a good amount of testing and some tweaking can't sort.
    (Quick flash via USB on the bios to get the latest added in and updated as needed long as it doesn't break anything and that should be good to go too most of the time at least.)


    EDIT: Going up to hexa and above in terms of CPU core count is definitively going to be a big thing too, even from a older hexa core to a newer could be a nice performance benefit plus support for later features other than I suppose AVX512 or some parts of it and how it's implemented if that even matters much at all for the average user.

    Bit of a post but it's summed up easily enough, get rid of all the bottlenecks or at least minimize them and if possible keep it mostly on the GPU and upgrade as needed. :D
     
    Last edited: May 31, 2020

  16. AsiJu

    AsiJu Ancient Guru

    Messages:
    6,978
    Likes Received:
    1,993
    GPU:
    MSI RTX 2070 Armor
    Yeah likely GPU limited near consistently, though as suggested a CPU upgrade wouldn't hurt ;)

    Anyway as another person mentioned above should be smooth sailing for vast majority of games and the few you might encounter that aren't, just change per-game settings to Off (app controlled).

    Why I personally still set On / Ultra on per-game basis is more force of habit than anything else.

    (Besides ever since the option to set pre-render to 0 was removed - ages ago - you can't really "break" anything anymore.)
     
  17. BlindBison

    BlindBison Master Guru

    Messages:
    605
    Likes Received:
    108
    GPU:
    RTX 2080 Super
    Just tossing an update on here:

    I can confirm this behavior ALSO occurs with Crysis 3 -- if I use default pre-render settings I get lower overall FPS and the framepacing just goes NUTS. Like, holy hell the RTSS graph is insane just panning the camera and there is a lot of microstuttering.

    I then switch to Ultra Low Latency mode ON and suddenly I'm getting higher overall fps AND the RTSS graph in the same areas is significantly more stable. Tried this three times with reboots inbetween then without reboots in between and this is definitely happening.

    wtf -- perhaps this has to do with the fact that I'm using the 3900X? This just seems super weird.

    Fascinatingly, in my tests a value of ON for low-lag mode does NOT resolve the problem while Ultra does.
     
    Last edited: Jun 15, 2020
  18. aufkrawall2

    aufkrawall2 Master Guru

    Messages:
    772
    Likes Received:
    106
    GPU:
    6800 reference UV
    My experience usually is "on" (=1) helps frame time consistency the most and often "ultra" (<1) improves that further.
    Like I said: No idea why Nvidia doesn't make at least "on" the default setting. E.g. also Mafia 2 DE runs like total crap with the game's default prerender limit.
    I had been using prerender limit 1 for years without any issue, and now the same applies to ULL ultra.
     
    AsiJu likes this.
  19. BlindBison

    BlindBison Master Guru

    Messages:
    605
    Likes Received:
    108
    GPU:
    RTX 2080 Super
    What's bizarre is that Low Lag modes OFF for something like Crysis 3 (perhaps this has something to do with the fact that I'm using a Ryzen 3rd gen CPU? Unsure), but I get WORSE fps AND more stuttering with either the default prerender settings or even low lag ON (rather than ULLM).

    Seriously really weird -- I had read previously that default prerender settings should increase peak fps a bit, increase utilization, and prevent cpu related stuttering.

    Instead what I'm seeing is the opposite at least for these CryEngine titles specifically. Can someone with an Intel CPU try and reproduce this if you have those games? I'm wondering if it's a Ryzen thing.

    I don't understand why ULLM is "fixing" the problem for these games -- that just seems... weird. I also wonder if maybe this is some kind of Nvidia driver issue? Since ULLM fixed the problem? I'm really not sure/just speculating at this point.

    EDIT: I also tried testing this with Prey 2017 since it's another CryEngine game -- this behavior does NOT seem to occur with Hunt Showdown but my understanding is that that game uses a more recent version of the CryEngine.

    In Prey I wasn't really able to test whether or not ULLM reduces microstuttering since even at the highest settings at 1440p it was tough to drop it down beneath the 138 imposed cap (or the 141 cap when not using ULLM). It "seemed" to improve microstuttering to turn on ULLM (since it was hard to get stutters to happen when I turned ULLM on) and I recall microstuttering in the opening scene with ULLM OFF, but that could've just been shader compilation stutter, I really don't know. If at a later point in the game I'm more consistently able to drop the framerate in an area will test this again.
     
    Last edited: Jun 16, 2020
  20. aufkrawall2

    aufkrawall2 Master Guru

    Messages:
    772
    Likes Received:
    106
    GPU:
    6800 reference UV
    It's not an Nvidia driver issue. With a Radeon, you can still run Crysis 3 with app controlled prerender limit by using DXVK, and then it runs like crap too vs. prerender limit 1. I'm also quite certain that with Nvidia, prerender limit 1 already helps a lot in Crysis 3.
    I don't know who ever said that prerender limit 1 was bad for frame time consistency, but he surely was wrong from the very beginning.
     

Share This Page