1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Helper functions for GL. 6 7 #ifndef GPU_COMMAND_BUFFER_TESTS_GL_TEST_UTILS_H_ 8 #define GPU_COMMAND_BUFFER_TESTS_GL_TEST_UTILS_H_ 9 10 #include <GLES2/gl2.h> 11 #include "base/basictypes.h" 12 13 class GLTestHelper { 14 public: 15 static const uint8 kCheckClearValue = 123u; 16 17 static bool HasExtension(const char* extension); 18 static bool CheckGLError(const char* msg, int line); 19 20 // Compiles a shader. 21 // Returns shader, 0 on failure.. 22 static GLuint LoadShader(GLenum type, const char* shaderSrc); 23 24 // Attaches 2 shaders and links them to a program. 25 // Returns program, 0 on failure.. 26 static GLuint SetupProgram(GLuint vertex_shader, GLuint fragment_shader); 27 28 // Compiles 2 shaders, attaches and links them to a program 29 // Returns program, 0 on failure. 30 static GLuint LoadProgram( 31 const char* vertex_shader_source, 32 const char* fragment_shader_source); 33 34 // Make a unit quad with position only. 35 // Returns the created buffer. 36 static GLuint SetupUnitQuad(GLint position_location); 37 38 // Make a 6 vertex colors. 39 // Returns the created buffer. 40 static GLuint SetupColorsForUnitQuad( 41 GLint location, const GLfloat color[4], GLenum usage); 42 43 // Checks an area of pixels for a color. 44 static bool CheckPixels( 45 GLint x, GLint y, GLsizei width, GLsizei height, GLint tolerance, 46 const uint8* color); 47 48 // Uses ReadPixels to save an area of the current FBO/Backbuffer. 49 static bool SaveBackbufferAsBMP(const char* filename, int width, int height); 50 51 // Run unit tests. 52 static int RunTests(int argc, char** argv); 53 }; 54 55 #endif // GPU_COMMAND_BUFFER_TESTS_GL_TEST_UTILS_H_ 56