10 static int parse_args(int argc, char **argv);
12 static struct video_mode *vidmode;
14 int main(int argc, char **argv)
20 read_config("rbench.cfg");
22 if(parse_args(argc, argv) == -1) {
27 __djgpp_nearptr_enable();
30 init_logger("rbench.log");
32 if(init_video() == -1) {
36 if((vmidx = match_video_mode(opt.width, opt.height, opt.bpp)) == -1) {
39 if(!(vmem = set_video_mode(vmidx, 1))) {
42 vidmode = get_video_mode(vmidx);
44 fb_rmask = vidmode->rmask;
45 fb_gmask = vidmode->gmask;
46 fb_bmask = vidmode->bmask;
47 fb_rshift = vidmode->rshift;
48 fb_gshift = vidmode->gshift;
49 fb_bshift = vidmode->bshift;
60 time_msec = get_msec();
64 blit_frame(framebuf, 0);
73 printf("%d frames in %d msec\n", num_frames, time_msec);
74 printf("avg framerate: %.1f fps\n", (10000 * num_frames / time_msec) / 10.0f);
79 int resizefb(int x, int y, int bpp, int pitch)
81 printf("resizefb %dx%d %dbpp (pitch: %d)\n", x, y, bpp, pitch);
90 if(!(framebuf = malloc(fb_pitch * fb_height))) {
91 fprintf(stderr, "failed to allocate %dx%d (%dbpp) framebuffer\n",
92 fb_width, fb_height, fb_bpp);
98 static const char *usage_str =
99 "Usage: %s [options]\n"
101 " -s <WxH>: resolution\n"
102 " -b <bpp>: color depth\n"
103 " -h: print usage and exit\n";
105 static int parse_args(int argc, char **argv)
109 for(i=1; i<argc; i++) {
110 if(argv[i][0] == '-') {
116 if(!argv[++i] || sscanf(argv[i], "%dx%d", &opt.width, &opt.height) != 2) {
117 fprintf(stderr, "-s must be followed by WxH\n");
123 if(!argv[++i] || !(opt.bpp = atoi(argv[i]))) {
124 fprintf(stderr, "-b must be followed by the color depth\n");
130 printf(usage_str, argv[0]);
137 inval_arg: fprintf(stderr, "invalid argument: %s\n", argv[i]);