This test is to determine
the refresh rate of a given mode exactly and in so doing it also determines
how long TimeDX should spend when it determines the retrace rate automatically
for the Time Video Mode test. Unless
you notice the retrace rate determination in the Time Video mode test
taking an inordinate amount of time (it should take a few seconds at most
and on some machines it's so fast you can't ever actually see the test run) you can pretty
much forget about this test (unless you are using an LCD flat panel display,
see below) beyond making sure that it doesn't throw an error.
If you cannot get the test to run without flagging an error all other
programs should be closed when using this test, particularly things like
MS Word. The BIOPAC Acquire program is also horrendous, until they
change the program so it doesn't use every single CPU cycle even when it
isn't doing anything DMDX and TimeDX are going to have a tough time doing
accurate timing.
The refresh rate test sets up two screens with the text
"Refresh Rate <>" and "Refresh Rate ><" and flips between them as fast the
hardware will allow, which should be at the refresh rate. When the test is working properly you should see the sets of
angle brackets imposed on each other, smoothly, there should
be no flickering beyond the first few flips. You should see four little
Xs in a 2x2 grid that should be dimmer than the Retrace Rate text except at
the centers of the Xs where they will have the same intensity as the
Retrace Rate text. Sometimes a machine just gets
flat out ornery and this test coughs and farts and never settles down, restart TimeDX and all is plain sailing again. In the past when I experienced
this problem it was directly attributable to MS Word, closing it removed
all trace of instability. These days it's usually a LCD flat panel running
at a non-native resolution (see below) adding yet another complicated
wrinkle to everything. Although the display might be flickering all
over the place TimeDX might in fact determine the retrace interval
correctly because it's the panel itself causing the flickering, not the
computer and the user has to recognize the visual indications of poor
testing.
Another good check
is that a number of monitors these days sense what the refresh rate is and
store brightness, contrast, etc, parameters for each video mode, when you
adjust these the monitor usually displays the current refresh rate in Hertz,
invert this number and that is the number the Retrace Rate determination
code should be coming up with, if it's not you need to tweak it's parameters
until it does.
The user can control how
accurately (or how long) this test takes by raising or lowering the SD
field. This value is stored in the registry and used
by the Time Video Mode Test when it determines what the automatic timing values
should be for any given video mode. The version 5 Refresh Rate test
operates by recording the intervals from successive Present() (Direct3D) or
Flip() (DirectDraw) operations and calculating the SD of those intervals.
When the requested number's deviation falls below the specified SD the test
stops and returns the retrace interval as the average of those samples. The default value of
60 cycles and an SD of 0.1 typically yields values that are accurate to 0.01ms.
On some machines this may be unattainable but on everything I've tested so
far it's been fine. If the test refuses to finish hitting a key or
clicking the mouse will terminate it, however the version 5 code usually
still returns a pretty accurate value even then. If your machine
takes too long or never settles down enough to finish then you will have to
raise the SD till it does.
The user can also flag whether the routine is not to
check for other activity as the test is running. I stuck this is in in
the hope that perhaps I could block MS Word's interference with it but
alas it doesn't look like it -- the design of the version 5 code renders this consideration moot
in my experience however. Checking the "Don't Bother Checking
for Other Activity" checkbox stops
the timing routine from processing windows messages while it's running, if checked you won't
be able to abort the timing loop (so if you specified a really low SD you'll
be waiting for a while) but there's less chance the timing loop will be interrupted.
When using the default
DirectDraw rendering path there is a possibility that
the hardware may be cheating on flips (see flip waiting time at the end of
the Video
Mode selection), by buffering
a number of flips up so benchmarks look better. If this check box is
grayed out you're using the Direct3D rendering path. While the
version 5 SD based code renders such cheating irrelevant I left the "Read
Between Flips" option in there because I don't want to delete code that
could be useful some day on some future setup that I can't predict
currently.
LCD Flat Panel Displays.
The prevalence of TFT or LCD
flat panel displays these days introduces new and critical issues for
tachistoscopic displays when using the non-native resolutions of the flat panel
and it just so happens that the Refresh Rate test is a really good way of
detecting whether you've actually selected said native resolution or not. When a flat
panel sees a video signal that's not at it's native resolution it has to
render that video data into it's own resolution, this takes time and thus
lags the display and can also drop whole frames of video data so selecting
the native resolution as the video mode becomes critical. The Video
Mode dialog has a button to select the desktop resolution which is
normally but not always the native resolution and in addition there are
flat panels that only operate correctly at particular retrace rates so the
video mode selection really has to be checked against the monitor in real
time to see whether the monitor is screwing things up and the Refresh Rate
test is a really good test because it presents a continuous train of
different displays which the unaided eye can easily detect changes in.
So when the monitor drops a frame you see the display flicker. Which
presents a bit of a problem as a failure anywhere produces the some sort of
flickering display, you can have cheating drivers (or other more
severe problems) producing flickering and you can have the monitor
producing it leaving the poor user with even less clue as to what's
happening. Principle difference here is that TimeDX can time the
display correctly while it's flickering due to monitor based non-native
resolution factors whereas the other flickering (caused by drivers or
worse) won't get timed correctly till the SD is raised. So if you see the
Refresh Rate test correctly determine the refresh rate in a reasonable
period of time but the display is still flickering you can be sure you're
not using the native resolution of the flat panel as the flickering is
being caused by the panel. To cap it all off I've
seen recent examples of flat panels that operated at 60, 70 and 75 Hz, some
of them only operate correctly at 60 Hz, others at 75 Hz. So the Refresh
Rate test becomes your acid test for determining what display you should
use. If the Refresh Rate test is operating quickly and giving the
right sort of results but the display is flickering the display resolution and or the refresh rate isn't
to the monitors liking. Get it all right and you'll finally see an
even display. All is not lost however, even if you get everything wrong
(assuming you get half way correct video timing parameters in the Vertical
Retrace Sync test) the worst error DMDX is going make is still only a
couple of ticks or so so all of this only really matters to people doing
masked primes and other sorts of tachistoscopic displays. And color
depth doesn't appear to be a variable so you've still got the choice of 16
or 32 bit displays.
There's a rather good article on
LCD flat panels on X-bit labs:
Contemporary LCD Monitor Parameters: Objective and Subjective Analysis.
Saved version is here.
TimeDX Index.