| // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef GLBENCH_MAIN_H_ |
| #define GLBENCH_MAIN_H_ |
| |
| #include <gflags/gflags.h> |
| #include <sys/time.h> |
| |
| #if defined(USE_OPENGLES) |
| #include <EGL/egl.h> |
| #include <GLES2/gl2.h> |
| #include <GLES2/gl2ext.h> |
| #elif defined(USE_OPENGL) |
| #include <GL/gl.h> |
| #include <GL/glx.h> |
| |
| #ifdef WORKAROUND_CROSBUG14304 |
| #define LIST_PROC_FUNCTIONS(F) \ |
| F(glActiveTexture, PFNGLACTIVETEXTUREPROC) \ |
| F(glAttachShader, PFNGLATTACHSHADERPROC) \ |
| F(glBindBuffer, PFNGLBINDBUFFERPROC) \ |
| F(glBufferData, PFNGLBUFFERDATAPROC) \ |
| F(glCompileShader, PFNGLCOMPILESHADERPROC) \ |
| F(glCreateProgram, PFNGLCREATEPROGRAMPROC) \ |
| F(glCreateShader, PFNGLCREATESHADERPROC) \ |
| F(glDeleteBuffers, PFNGLDELETEBUFFERSPROC) \ |
| F(glDeleteProgram, PFNGLDELETEPROGRAMPROC) \ |
| F(glDeleteShader, PFNGLDELETESHADERPROC) \ |
| F(glDisableVertexAttribArray, PFNGLDISABLEVERTEXATTRIBARRAYPROC) \ |
| F(glEnableVertexAttribArray, PFNGLENABLEVERTEXATTRIBARRAYPROC) \ |
| F(glGenBuffers, PFNGLGENBUFFERSPROC) \ |
| F(glGetAttribLocation, PFNGLGETATTRIBLOCATIONPROC) \ |
| F(glGetInfoLogARB, PFNGLGETPROGRAMINFOLOGPROC) \ |
| F(glGetProgramInfoLog, PFNGLGETPROGRAMINFOLOGPROC) \ |
| F(glGetShaderInfoLog, PFNGLGETSHADERINFOLOGPROC) \ |
| F(glGetUniformLocation, PFNGLGETUNIFORMLOCATIONPROC) \ |
| F(glLinkProgram, PFNGLLINKPROGRAMPROC) \ |
| F(glShaderSource, PFNGLSHADERSOURCEPROC) \ |
| F(glUniform1f, PFNGLUNIFORM1FPROC) \ |
| F(glUniform1i, PFNGLUNIFORM1IPROC) \ |
| F(glUniform4fv, PFNGLUNIFORM4FVPROC) \ |
| F(glUniformMatrix4fv, PFNGLUNIFORMMATRIX4FVPROC) \ |
| F(glUseProgram, PFNGLUSEPROGRAMPROC) \ |
| F(glVertexAttribPointer, PFNGLVERTEXATTRIBPOINTERPROC) \ |
| F(glXSwapIntervalSGI, PFNGLXSWAPINTERVALSGIPROC) \ |
| F(glXBindTexImageEXT, PFNGLXBINDTEXIMAGEEXTPROC) \ |
| F(glXReleaseTexImageEXT, PFNGLXRELEASETEXIMAGEEXTPROC) |
| #else |
| #define LIST_PROC_FUNCTIONS(F) \ |
| F(glAttachShader, PFNGLATTACHSHADERPROC) \ |
| F(glBindBuffer, PFNGLBINDBUFFERPROC) \ |
| F(glBindFramebuffer, PFNGLBINDFRAMEBUFFERPROC) \ |
| F(glBindRenderbuffer, PFNGLBINDRENDERBUFFERPROC) \ |
| F(glBufferData, PFNGLBUFFERDATAPROC) \ |
| F(glCheckFramebufferStatus, PFNGLCHECKFRAMEBUFFERSTATUSPROC) \ |
| F(glCompileShader, PFNGLCOMPILESHADERPROC) \ |
| F(glCreateProgram, PFNGLCREATEPROGRAMPROC) \ |
| F(glCreateShader, PFNGLCREATESHADERPROC) \ |
| F(glDeleteBuffers, PFNGLDELETEBUFFERSPROC) \ |
| F(glDeleteFramebuffers, PFNGLDELETEFRAMEBUFFERSPROC) \ |
| F(glDeleteProgram, PFNGLDELETEPROGRAMPROC) \ |
| F(glDeleteRenderbuffers, PFNGLDELETERENDERBUFFERSPROC) \ |
| F(glDeleteShader, PFNGLDELETESHADERPROC) \ |
| F(glDisableVertexAttribArray, PFNGLDISABLEVERTEXATTRIBARRAYPROC) \ |
| F(glEnableVertexAttribArray, PFNGLENABLEVERTEXATTRIBARRAYPROC) \ |
| F(glFramebufferRenderbuffer, PFNGLFRAMEBUFFERRENDERBUFFERPROC) \ |
| F(glFramebufferTexture2D, PFNGLFRAMEBUFFERTEXTURE2DPROC) \ |
| F(glGenBuffers, PFNGLGENBUFFERSPROC) \ |
| F(glGenFramebuffers, PFNGLGENFRAMEBUFFERSPROC) \ |
| F(glGenRenderbuffers, PFNGLGENRENDERBUFFERSPROC) \ |
| F(glGetAttribLocation, PFNGLGETATTRIBLOCATIONPROC) \ |
| F(glGetInfoLogARB, PFNGLGETPROGRAMINFOLOGPROC) \ |
| F(glGetProgramInfoLog, PFNGLGETPROGRAMINFOLOGPROC) \ |
| F(glGetShaderInfoLog, PFNGLGETSHADERINFOLOGPROC) \ |
| F(glGetUniformLocation, PFNGLGETUNIFORMLOCATIONPROC) \ |
| F(glLinkProgram, PFNGLLINKPROGRAMPROC) \ |
| F(glRenderbufferStorage, PFNGLRENDERBUFFERSTORAGEPROC) \ |
| F(glShaderSource, PFNGLSHADERSOURCEPROC) \ |
| F(glUniform1f, PFNGLUNIFORM1FPROC) \ |
| F(glUniform1i, PFNGLUNIFORM1IPROC) \ |
| F(glUniform4fv, PFNGLUNIFORM4FVPROC) \ |
| F(glUniformMatrix4fv, PFNGLUNIFORMMATRIX4FVPROC) \ |
| F(glUseProgram, PFNGLUSEPROGRAMPROC) \ |
| F(glVertexAttribPointer, PFNGLVERTEXATTRIBPOINTERPROC) \ |
| F(glXBindTexImageEXT, PFNGLXBINDTEXIMAGEEXTPROC) \ |
| F(glXReleaseTexImageEXT, PFNGLXRELEASETEXIMAGEEXTPROC) \ |
| F(glXSwapIntervalSGI, PFNGLXSWAPINTERVALSGIPROC) |
| #endif |
| |
| namespace gl { |
| #define F(fun, type) extern type fun; |
| LIST_PROC_FUNCTIONS(F) |
| #undef F |
| }; |
| |
| using namespace gl; |
| #else |
| #error bad graphics backend |
| #endif |
| |
| inline uint64_t GetUTime() { |
| struct timeval tv; |
| gettimeofday(&tv, NULL); |
| return static_cast<uint64_t>(tv.tv_usec) + |
| 1000000ULL*static_cast<uint64_t>(tv.tv_sec); |
| } |
| |
| extern bool g_hasty; |
| extern GLint g_width; |
| extern GLint g_height; |
| extern GLint g_max_texture_size; |
| |
| DECLARE_bool(override_redirect); |
| |
| // This size is for a window that is very large but will fit on all |
| // the displays we care about. |
| #define WINDOW_WIDTH 512 |
| #define WINDOW_HEIGHT 512 |
| |
| #endif // GLBENCH_MAIN_H_ |