Clarifying requestAnimationFrame() standard for multimonitor setups (or detecting multimonitor)


Users of the motion animation tests at have reported
some problems when running this in certain web browsers on a multimonitor
setup.  And sometimes they use different refresh rates (e.g. 120Hz, 144Hz,
also found in GSYNC monitors) on some displays than others.

End of section 5 of W3C Animation Timing Standard recommends
requestAnimationFrame() to run at the refresh rate of the monitor.

Some really good browsers automatically use the refresh rate of the monitor
the web browser is currently on.  However, this doesn't always work.  I
have seen different web browsers do this:

-- Web browser on secondary monitor runs requestAnimationFrame() at the
rate of the primary.  That creates nasty stuttering problems, and makes the
animation tests invalid.
-- Web browser runs at the rate of the lowest-refresh-rate monitor
-- Web browser runs at the rate of the primary, no matter what.
-- Web browser runs at a low rate that's a divisor of the refresh rate
(e.g. rAF() 30fps at 120Hz even at 0.1% CPU in Task Manager).

And it even varies whether Aero is enabled versus disabled in Windows 7,

(1) Can we amend the Animation Timing Standard to include a mention of
multimonitor behavior?  One or two sentences will do.

(2) Gentlemen and ladies, we now need a Javascript method of detecting
multimonitors please. (I beg W3C.)  That way, I can display a warning
message "You are running a multimonitor setup.  Frame rate accuracy may be
unreliable, depending on how your browser and OS handles this" on several
of the scientific motion tests at ...  Also, with web apps, it
may be necessary for web apps to be multi-monitor aware, if one website
(e.g. Google Docs) wants to automatically "span stuff" (like a large
spreadsheet) between two different browser windows running on two separate
screens, or something like that -- there are probably useful use cases now
that makes it a good idea to add multimonitor API's to web browsers now.
(this may belong on a separate W3C list)

I need to be able to detect multi monitor because TestUFO is the first web
site that makes perfect refreshrate-framerate matching a requirement, and
analytics show that 80% of my visitors are running TestUFO correctly now
(thanks to all 5 major web browsers are now GPU accelerated and follow
Animation Timing recommendation of matching frame rate to refresh rate,
people using modern GPU's on recent computers and mobile phones).
Multimonitor setups throw a monkey wrench in this, since many 120Hz users
(those who can afford them) are also running multimonitor setups.

Mark Rejhon

Received on Sunday, 15 December 2013 06:07:06 UTC