diff options
author | Zack Rusin <zack@ppc64.localdomain> | 2006-03-17 00:25:27 -0500 |
---|---|---|
committer | Zack Rusin <zack@ppc64.localdomain> | 2006-03-17 00:25:27 -0500 |
commit | adcc63c9cf1d506293191c04a7d5b3414b4004e6 (patch) | |
tree | 6750480c07e7bfc20197d46b7ab1d2e862115f5e | |
parent | 2225a63f87bae9c2d49444b2bafc689f864b2009 (diff) |
follow benh's suggestion and use common timing for all tests
-rw-r--r-- | main.cpp | 5 | ||||
-rw-r--r-- | utils.cpp | 29 | ||||
-rw-r--r-- | utils.h | 1 |
3 files changed, 24 insertions, 11 deletions
@@ -6,13 +6,12 @@ #include <QString> #include <X11/Xlib.h> -#include <X11/Xutil.h> #include <X11/extensions/Xrender.h> -#include <X11/extensions/XShm.h> #include <sys/time.h> #include <time.h> #include <stdio.h> +#include <signal.h> #include <stdlib.h> #include "utils.h" @@ -67,6 +66,7 @@ RenderOp all_render_ops[] = { {NULL, 0, 0} }; + void test_oper(int op, XRenderSurf *src, XRenderSurf *mask, XRenderSurf *dst) { @@ -149,6 +149,7 @@ main(int argc, char **argv) fprintf(stderr, "Error: Cannot connect to display!\n"); exit(-1); } + signal(SIGALRM, alarmhandler); setup_window(); main_loop(); return 0; @@ -10,6 +10,7 @@ #include <sys/time.h> #include <time.h> +#include <signal.h> #include <stdio.h> #include <stdlib.h> @@ -33,26 +34,25 @@ get_time(void) return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); } +static int keep_running = 0; +static int frame_cnt = 0; void time_test(char *description, void (*func) (int op, XRenderSurf *src, XRenderSurf *mask, XRenderSurf *dst), RenderOp *op, XRenderSurf *src, XRenderSurf *mask, XRenderSurf *dst) { - double t1, t2, t; - int i; - char buf[51]; snprintf(buf, 50, "%s%s", description, FILLER); printf("\t\t %s", buf); fflush(NULL); - t1 = get_time(); - for (i = 0; i < REPS; ++i) + alarm(5); + keep_running = 1; + while (keep_running) { func(op->op, src, mask, dst); - XSync(QX11Info::display(), False); - t2 = get_time(); - t = t2 - t1; - printf(" Time: %3.3f sec.\n", t); + XSync(QX11Info::display(), 0); + ++frame_cnt; + } } void @@ -101,3 +101,14 @@ setup_window(void) XMapWindow(disp, win); XSync(disp, False); } + +void alarmhandler(int sig) +{ + if (sig == SIGALRM) { + printf ("%d frames in 5.0 seconds = %.3f FPS\n", frame_cnt, + frame_cnt / 5.0); + frame_cnt = 0; + keep_running = 0; + } + signal(SIGALRM, alarmhandler); +} @@ -22,5 +22,6 @@ void time_test(char *description, void (*func)(int op, XRenderSurf *src, XRend RenderOp *op, XRenderSurf *src, XRenderSurf *mask, XRenderSurf *dst); void populate_from_file(Display *disp, XRenderSurf *rs, const char *file); void setup_window(void); +void alarmhandler(int sig); #endif |