Index: client/deps/glbench/src/teartest.cc |
diff --git a/client/deps/glbench/src/teartest.cc b/client/deps/glbench/src/teartest.cc |
index 941baf4f7371a4b73719f38c38ccc7ce6ce7d876..664e8265078936688c2e50c59e38b51dabcedc14 100644 |
--- a/client/deps/glbench/src/teartest.cc |
+++ b/client/deps/glbench/src/teartest.cc |
@@ -2,6 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include <gflags/gflags.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
@@ -18,6 +19,8 @@ |
static Pixmap pixmap = 0; |
static int shift_uniform = 0; |
+DEFINE_int32(refresh, 0, |
+ "If 1 or more, target refresh rate; otherwise enable vsync"); |
GLuint GenerateAndBindTexture() { |
GLuint name = ~0; |
@@ -46,33 +49,6 @@ const char *fragment_shader = |
"}"; |
-// If refresh is set to zero, we enable vsync. Otherwise we redraw that many |
-// times a second. |
-struct timespec* g_sleep_duration = NULL; |
-static void ParseArgs(int argc, char* argv[]) { |
- bool refresh_arg = false; |
- for (int i = 0; i < argc; i++) { |
- if (refresh_arg) { |
- refresh_arg = false; |
- |
- int refresh = atoi(argv[i]); |
- if (refresh > 1) { |
- delete g_sleep_duration; |
- g_sleep_duration = new struct timespec; |
- g_sleep_duration->tv_sec = 0; |
- g_sleep_duration->tv_nsec = static_cast<long>(1.e9 / refresh); |
- } else { |
- printf("-r requires integer greater than one.\n"); |
- } |
- } else if (strcmp("-o", argv[i]) == 0) { |
- g_override_redirect = true; |
- } else if (strcmp("-r", argv[i]) == 0) { |
- refresh_arg = true; |
- } |
- } |
-} |
- |
- |
void AllocatePixmap() { |
XWindowAttributes attributes; |
XGetWindowAttributes(g_xlib_display, g_xlib_window, &attributes); |
@@ -160,9 +136,14 @@ Test test[] = { |
}; |
int main(int argc, char* argv[]) { |
- g_override_redirect = false; |
+ struct timespec* sleep_duration = NULL; |
g_height = -1; |
- ParseArgs(argc, argv); |
+ google::ParseCommandLineFlags(&argc, &argv, true); |
+ if (FLAGS_refresh >= 1) { |
+ sleep_duration = new struct timespec; |
+ sleep_duration->tv_sec = 0; |
+ sleep_duration->tv_nsec = static_cast<long>(1.e9 / FLAGS_refresh); |
+ } |
if (!Init()) { |
printf("# Failed to initialize.\n"); |
return 1; |
@@ -192,7 +173,7 @@ int main(int argc, char* argv[]) { |
glUniform1f(texture_sampler, 0); |
shift_uniform = glGetUniformLocation(program, "shift"); |
- SwapInterval(g_sleep_duration ? 0 : 1); |
+ SwapInterval(sleep_duration ? 0 : 1); |
for (unsigned int i = 0; i < sizeof(test)/sizeof(*test); i++) |
{ |
@@ -209,8 +190,8 @@ int main(int argc, char* argv[]) { |
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); |
glFlush(); |
- if (g_sleep_duration) |
- nanosleep(g_sleep_duration, NULL); |
+ if (sleep_duration) |
+ nanosleep(sleep_duration, NULL); |
SwapBuffers(); |