0

For apps with a present interval of 1 and interacts with user input, I am trying to understand if there's any motivations/scenarios to set max frame latency > 1 via IDXGIDevice1::SetMaximumFrameLatency. It's clear the benefit of a low max frame latency is to reduce latency of user input, but it's not obvious to me what scenarios would warrant a max frame latency of 2 or 3. It wouldn't really help with FPS because at steady state, an app can only queue an additional frame anyways since it has to wait for the currently displayed frame to finish.

If anyone has any ideas about this, that'd be appreciated. Especially if someone can outline a scenario where a higher max frame latency really helps :)

Thanks.

lancery
  • 658
  • 1
  • 6
  • 18
  • *"an app can only queue an additional frame anyways"* - this is only true if you have frame latency 1. If you triple-buffer and allow latency 2, you can queue 2 frames, which allows better parallelism. The amount of increased parallelism varies based on workload, but the difference in throughput when using 1 vs. 2 queued frames is sometimes significant enough to affect framerate. – MooseBoys May 12 '15 at 18:21

1 Answers1

1

The link to the documentation you posted explains exactly a situation when you may want to use a higher frame latency:

It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

If the CPU is able to process many frames in advance, this may provide the opportunity to use CPU cycles in subsequent frames for other tasks, while the GPU catches up. It may also be useful if CPU load to produce a frame is unpredictable.

MuertoExcobito
  • 9,741
  • 2
  • 37
  • 78