Wine or a windows app changes fpucw to 0x7f, causing doubles to be equivalent to floats, which broke the calculation of FPS. We should be very careful about using doubles in Mesa. --- src/glx/dri2_glx.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index f2fc187..4ff0b9e 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -112,7 +112,7 @@ struct dri2_drawable int have_fake_front; int swap_interval; - double previous_time; + uint64_t previous_time; unsigned frames; }; @@ -676,17 +676,18 @@ unsigned dri2GetSwapEventType(Display* dpy, XID drawable) static void show_fps(struct dri2_drawable *draw) { struct timeval tv; - double current_time; + uint64_t current_time; gettimeofday(&tv, 0); - current_time = (double)tv.tv_sec + (double)tv.tv_usec * 0.000001; + current_time = (uint64_t)tv.tv_sec*1000000 + (uint64_t)tv.tv_usec; draw->frames++; - if (draw->previous_time + 1 < current_time) { + if (draw->previous_time + 1000000 <= current_time) { if (draw->previous_time) { fprintf(stderr, "libGL: FPS = %.1f\n", - draw->frames / (current_time - draw->previous_time)); + ((uint64_t)draw->frames * 1000000) / + (double)(current_time - draw->previous_time)); } draw->frames = 0; draw->previous_time = current_time; -- 1.7.9.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev