// 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 BENCH_GL_UTILS_H_
#define BENCH_GL_UTILS_H_
#if defined(USE_OPENGLES)
#include "GLES2/gl2.h"
#elif defined(USE_OPENGL)
#include "GL/gl.h"
#endif
#include "base/files/file_path.h"
extern double g_initial_temperature;
void SetBasePathFromArgv0(const char* argv0, const char* relative);
void *MmapFile(const char *name, size_t *length);
const base::FilePath& GetBasePath();
// Returns temperature of system before testing started. It is used as a
// reference for keeping the machine cool.
const double GetInitialMachineTemperature();
// For thermal monitoring of system.
double GetMachineTemperature();
// Wait for machine to cool with temperature in Celsius and timeout in seconds.
// Returns the time spent waiting and sets the last observed temperature.
double WaitForCoolMachine(double cold_temperature, double timeout,
double *temperature);
namespace glbench {
GLuint SetupTexture(GLsizei size_log2);
GLuint SetupVBO(GLenum target, GLsizeiptr size, const GLvoid *data);
void CreateLattice(GLfloat **vertices, GLsizeiptr *size,
GLfloat size_x, GLfloat size_y, int width, int height);
int CreateMesh(GLushort **indices, GLsizeiptr *size,
int width, int height, int culled_ratio);
GLuint InitShaderProgram(const char *vertex_src, const char *fragment_src);
GLuint InitShaderProgramWithHeader(const char* header,
const char* vertex_src,
const char* fragment_src);
GLuint InitShaderProgramWithHeaders(const char** headers,
int count,
const char* vertex_src,
const char* fragment_src);
void ClearBuffers();
} // namespace glbench
#endif // BENCH_GL_UTILS_H_