Open Bug 1065233 Opened 8 years ago Updated 7 years ago

We're not honoring the DWM 30 FPS throttle causing us to sometimes overproduce at 60 FPS

Categories

(Core :: Graphics: Layers, defect)

x86
macOS
defect
Not set
normal

Tracking

()

People

(Reporter: BenWa, Unassigned)

Details

It appears that DWM falls back to 30 FPS if the GPU load is high. Currently both Firefox and Chrome seem to ignore this and keep calling requestAnimationFrame at 60Hz. This means that both browser seem to overproduce. Both our and chrome FPS counter reports 60 FPS (or some number larger than 30 FPS). Meanwhile it appears the DWM is only refreshing at 30 Hz. The visual output seems to drop exactly every other frame.

STR:
0) Install FARPS, turn on the FPS counter for DMW (checkbox)
1) Run http://people.mozilla.org/~bgirard/webgl-tweak.html
2) Dial the GPU slider up until the FPS drops to about 5 FPS, wait about 10 seconds (could be higher or lower)
3) Dial the GPU slider to zero very quickly.
4) Our FPS should report 60, FRAPS will report 30. The frame color should stick to either red to green. DWM will realize that the GPU workload is reduced and revert back to 60 after some time (10-30 seconds).

"The blue lines are where the v-sync times. Usually, these occur once every 16 ms (60 fps), but if DWM is encountering a performance problem, it runs slower so they will occur once every 32 ms (30 fps)"
http://msdn.microsoft.com/en-us/library/windows/desktop/jj585574%28v=vs.85%29.aspx
Try setting the first parameter to Present to 1 or 2, and see if the problem still occurs. Possibly you'll also need to pass DXGI_PRESENT_DO_NOT_SEQUENCE to make it effective, but I don't think so.
You need to log in before you can comment on or make changes to this bug.