STEAM GROUP
Special K - "Kaldaien's Mod" Special☆K
STEAM GROUP
Special K - "Kaldaien's Mod" Special☆K
450
IN-GAME
3,412
ONLINE
Founded
May 23, 2016
Language
English
All Discussions > Development > Topic Details
thatsage May 3, 2019 @ 4:01am
BackBufferCount and PreRenderLimit (Maximum Device Latency)
Could someone please tell me what these options are about, and how they can cause less or more, stutter or input latency?

I know back buffers means the game renders to N buffers which are then showed in order and so the latency increase is obvious, but in what situations would this make stutter happen less or more? Regardless of the input latency cost.

Same question really, goes for pre render limit, which I'm not exactly sure on the difference between these two. But this has always been a mysterious switch to flick where sometimes in NVCP you set it to 1 (or 3 I guess in some cases as well), and in some rare games it is the only way to resolve stuttering significantly, but I haven't found a technical explanation as to why and in what situations.
Last edited by thatsage; May 3, 2019 @ 4:03am
Originally posted by Kaldaien:
Backbuffers are the number of completely rendered frames that the GPU can write before it forces the CPU to wait. It's true that with traditional swapchains, the images have to be displayed in-order, and that means that at minimum there is 1 refresh worth of latency for every backbuffer.

Flip model has a mode known as discard, however, which gets rid of the requirement that every rendered frame must be displayed. With flip discard, when it comes time for your monitor to refresh, the GPU is allowed to skip all finished frames and display the newest image.

    Flip discard allows you to draw faster than your monitor can refresh without added latency.


As for pre-rendered frame limit, this has to do with driver command queuing. This is the maximum number of frames worth of commands that the driver will accept before it tells the CPU to hold its horses and wait for the GPU to actually finish them :)

Backbuffer count traditionally has a bigger impact on input latency, but flip discard actually eliminates that latency problem and you're left with 2 potential sources of latency (1. image rescaling / DWM composition and 2. the length of the driver command queue).
< >
Showing 1-2 of 2 comments
The author of this thread has indicated that this post answers the original topic.
Kaldaien May 3, 2019 @ 4:37am 
Backbuffers are the number of completely rendered frames that the GPU can write before it forces the CPU to wait. It's true that with traditional swapchains, the images have to be displayed in-order, and that means that at minimum there is 1 refresh worth of latency for every backbuffer.

Flip model has a mode known as discard, however, which gets rid of the requirement that every rendered frame must be displayed. With flip discard, when it comes time for your monitor to refresh, the GPU is allowed to skip all finished frames and display the newest image.

    Flip discard allows you to draw faster than your monitor can refresh without added latency.


As for pre-rendered frame limit, this has to do with driver command queuing. This is the maximum number of frames worth of commands that the driver will accept before it tells the CPU to hold its horses and wait for the GPU to actually finish them :)

Backbuffer count traditionally has a bigger impact on input latency, but flip discard actually eliminates that latency problem and you're left with 2 potential sources of latency (1. image rescaling / DWM composition and 2. the length of the driver command queue).
Last edited by Kaldaien; May 3, 2019 @ 4:39am
thatsage May 3, 2019 @ 5:15am 
Ah, so I think I understand, it's indeed similar, but the direction is GPU to CPU for one and CPU to GPU for the other.

Thanks a lot for answering, and for your work of course. But could you elaborate more in the context of stuttering specifically? Because, on the face of it, it doesn't seem obvious to me why sometimes changing these can affect stuttering or micro-stuttering.

EDIT: btw just updated to 0.10.1 and it fixed some crashes I had with global injection, it's way better now. Thanks a lot! Always love updated menus with new stuff too seems it auto applies native max refresh rate now too, which is convenient :)
Last edited by thatsage; May 3, 2019 @ 5:48am
< >
Showing 1-2 of 2 comments
Per page: 1530 50

All Discussions > Development > Topic Details