Advertisement

Why am I getting frame skips/reuses on monitors?

Started by October 04, 2023 01:15 PM
1 comment, last by frob 1 year, 2 months ago

This issue happens both with pure DirectX11 code and Unity game engine.

Both programs have the same very basic functionality: showing a red and blue frames in sequential order. When there are no frame skips/reuses, the frames produce a solid violet color due to persistence of vision. Frame skipping which produces visible flashes happens only in below cases:

  1. Testing with regular monitors (1080p at 144Hz and 1080p at 240Hz, my case), they often (each few seconds) skip frames and reuse old frames. Have tested at refresh rates of 60-240Hz. I've tested on the monitors both when FreeSync is enabled and disabled on the monitors. Dumping the content of my output into image files reveals there's no frame skips/re-using at the program stage, only at the monitors.
  2. Tested on three laptop displays so far (using GTX1070, RTX3070 and RTX4080 GPUs) . Last two do not have this issue on their own display panels (1080p at 120Hz and 240Hz). First 120Hz laptop display with a GTX1070 does produce the issue.

Does not seem to depend on windowed vs fullscreen modes.

I believe that If frame skipping was normal behavior, then it would be present on all monitors, but it seems to depend on the monitor.

Does someone have any ideas what causes it, how to avoid it? Just beta testing the programs with your GPUs and monitors will also be greatly appreciated.

Profile the program. It's the only way to know for certain.

Unity has a built-in profiler that can give you a lot of data. Pix is a free profiler from Microsoft that can also reveal issues, and is especially focused on graphics profiling but can also tell a lot about the game when configured properly.

It may take some digging, but combined they can tell you exactly what the program doing during those stalls. They can tell you if it's a specific game object, a specific behaviour class, if it's a specific bit of shader code, if it's a specific resource barrier or lock, or whatever else is triggering the issue.

This topic is closed to new replies.

Advertisement