There's usually two of them built into every OpenGL
programmer.
--
<\___/>
/ O O \
\_____/ FTB.
Not really. The problem is that OGL is asynchronous; the problem is
that if you instrument your drawing code at the API level, the API is
designed to be such that it is non-blocking. The API will return as
soon as possible.
Okay. So you want to put glFinish() calls there to do a resolve in the
driver. Now you get timing, but.. with a pipe flush.. so what you are
timing isn't anymore what the driver is doing without the flush.
What you can do is to disable sync to screen refresh and render many
frames. Say, 100-300 and you get average frame time. Instrumenting
single frames is either unreliable or doesn't return the information
that you probably want.
NV has some profiling tools for their drivers.. try those, they have
the benefit that they can instrument the hardware and the driver
internally from points that make sense.