Commit bba05f37 by Nicolas Capens Committed by Nicolas Capens

Implement X11 onscreen framerate counter.

This FPS counter is disabled by default. Change-Id: Ida04352dece25a212cb678c9ceca4c31d654f373 Reviewed-on: https://swiftshader-review.googlesource.com/12128Tested-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 1de0eb7b
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "FrameBufferX11.hpp" #include "FrameBufferX11.hpp"
#include "libX11.hpp" #include "libX11.hpp"
#include "Timer.hpp"
#include <sys/ipc.h> #include <sys/ipc.h>
#include <sys/shm.h> #include <sys/shm.h>
...@@ -140,6 +141,30 @@ namespace sw ...@@ -140,6 +141,30 @@ namespace sw
} }
libX11->XSync(x_display, False); libX11->XSync(x_display, False);
if(false) // Draw the framerate on screen
{
static double fpsTime = sw::Timer::seconds();
static int framesSec = 0;
double time = sw::Timer::seconds();
double delta = time - fpsTime;
framesSec++;
static double FPS = 0.0;
if(delta > 1.0)
{
FPS = framesSec / delta;
fpsTime = time;
framesSec = 0;
}
char string[256];
sprintf(string, "FPS: %.1f", FPS);
libX11->XDrawString(x_display, x_window, x_gc, 50, 50, string, strlen(string));
}
} }
} }
......
...@@ -35,6 +35,7 @@ LibX11exports::LibX11exports(void *libX11, void *libXext) ...@@ -35,6 +35,7 @@ LibX11exports::LibX11exports(void *libX11, void *libXext)
XCreateImage = (XImage *(*)(Display*, Visual*, unsigned int, int, int, char*, unsigned int, unsigned int, int, int))getProcAddress(libX11, "XCreateImage"); XCreateImage = (XImage *(*)(Display*, Visual*, unsigned int, int, int, char*, unsigned int, unsigned int, int, int))getProcAddress(libX11, "XCreateImage");
XCloseDisplay = (int (*)(Display*))getProcAddress(libX11, "XCloseDisplay"); XCloseDisplay = (int (*)(Display*))getProcAddress(libX11, "XCloseDisplay");
XPutImage = (int (*)(Display*, Drawable, GC, XImage*, int, int, int, int, unsigned int, unsigned int))getProcAddress(libX11, "XPutImage"); XPutImage = (int (*)(Display*, Drawable, GC, XImage*, int, int, int, int, unsigned int, unsigned int))getProcAddress(libX11, "XPutImage");
XDrawString = (int (*)(Display*, Drawable, GC, int, int, char*, int))getProcAddress(libX11, "XDrawString");
XShmQueryExtension = (Bool (*)(Display*))getProcAddress(libXext, "XShmQueryExtension"); XShmQueryExtension = (Bool (*)(Display*))getProcAddress(libXext, "XShmQueryExtension");
XShmCreateImage = (XImage *(*)(Display*, Visual*, unsigned int, int, char*, XShmSegmentInfo*, unsigned int, unsigned int))getProcAddress(libXext, "XShmCreateImage"); XShmCreateImage = (XImage *(*)(Display*, Visual*, unsigned int, int, char*, XShmSegmentInfo*, unsigned int, unsigned int))getProcAddress(libXext, "XShmCreateImage");
......
...@@ -39,6 +39,7 @@ struct LibX11exports ...@@ -39,6 +39,7 @@ struct LibX11exports
XImage *(*XCreateImage)(Display *display, Visual *visual, unsigned int depth, int format, int offset, char *data, unsigned int width, unsigned int height, int bitmap_pad, int bytes_per_line); XImage *(*XCreateImage)(Display *display, Visual *visual, unsigned int depth, int format, int offset, char *data, unsigned int width, unsigned int height, int bitmap_pad, int bytes_per_line);
int (*XCloseDisplay)(Display *display); int (*XCloseDisplay)(Display *display);
int (*XPutImage)(Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height); int (*XPutImage)(Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height);
int (*XDrawString)(Display *display, Drawable d, GC gc, int x, int y, char *string, int length);
Bool (*XShmQueryExtension)(Display *display); Bool (*XShmQueryExtension)(Display *display);
XImage *(*XShmCreateImage)(Display *display, Visual *visual, unsigned int depth, int format, char *data, XShmSegmentInfo *shminfo, unsigned int width, unsigned int height); XImage *(*XShmCreateImage)(Display *display, Visual *visual, unsigned int depth, int format, char *data, XShmSegmentInfo *shminfo, unsigned int width, unsigned int height);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment