gears: show FPS count (as in glxgears from mesa/demos)
This commit is contained in:
committed by
Kristian Høgsberg
parent
2f9ed71a8f
commit
a1d0cf5d69
@@ -59,6 +59,8 @@ struct gears {
|
|||||||
|
|
||||||
GLint gear_list[3];
|
GLint gear_list[3];
|
||||||
int fullscreen;
|
int fullscreen;
|
||||||
|
int frames;
|
||||||
|
uint32_t last_fps;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct gear_template {
|
struct gear_template {
|
||||||
@@ -202,11 +204,34 @@ make_gear(const struct gear_template *t)
|
|||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_fps(struct gears *gears, uint32_t time)
|
||||||
|
{
|
||||||
|
long diff_ms;
|
||||||
|
|
||||||
|
gears->frames++;
|
||||||
|
|
||||||
|
diff_ms = time - gears->last_fps;
|
||||||
|
|
||||||
|
if (diff_ms > 5000) {
|
||||||
|
float seconds = diff_ms / 1000.0;
|
||||||
|
float fps = gears->frames / seconds;
|
||||||
|
|
||||||
|
printf("%d frames in %6.3f seconds = %6.3f FPS\n", gears->frames, seconds, fps);
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
|
gears->frames = 0;
|
||||||
|
gears->last_fps = time;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
frame_callback(void *data, struct wl_callback *callback, uint32_t time)
|
frame_callback(void *data, struct wl_callback *callback, uint32_t time)
|
||||||
{
|
{
|
||||||
struct gears *gears = data;
|
struct gears *gears = data;
|
||||||
|
|
||||||
|
update_fps(gears, time);
|
||||||
|
|
||||||
gears->angle = (GLfloat) (time % 8192) * 360 / 8192.0;
|
gears->angle = (GLfloat) (time % 8192) * 360 / 8192.0;
|
||||||
|
|
||||||
window_schedule_redraw(gears->window);
|
window_schedule_redraw(gears->window);
|
||||||
@@ -368,6 +393,7 @@ gears_create(struct display *display)
|
|||||||
{
|
{
|
||||||
const int width = 450, height = 500;
|
const int width = 450, height = 500;
|
||||||
struct gears *gears;
|
struct gears *gears;
|
||||||
|
struct timeval tv;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
gears = malloc(sizeof *gears);
|
gears = malloc(sizeof *gears);
|
||||||
@@ -407,6 +433,9 @@ gears_create(struct display *display)
|
|||||||
gears->view.rotx = 20.0;
|
gears->view.rotx = 20.0;
|
||||||
gears->view.roty = 30.0;
|
gears->view.roty = 30.0;
|
||||||
|
|
||||||
|
gettimeofday(&tv, NULL);
|
||||||
|
gears->last_fps = tv.tv_sec * 1000 + tv.tv_usec / 1000;
|
||||||
|
|
||||||
glEnable(GL_NORMALIZE);
|
glEnable(GL_NORMALIZE);
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
|||||||
Reference in New Issue
Block a user