| OLD | NEW |
| (Empty) |
| 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 #include <GLES2/gl2.h> | |
| 6 #include <GLES2/gl2ext.h> | |
| 7 | |
| 8 #include "gpu/command_buffer/tests/gl_manager.h" | |
| 9 #include "gpu/command_buffer/tests/gl_test_utils.h" | |
| 10 #include "testing/gmock/include/gmock/gmock.h" | |
| 11 #include "testing/gtest/include/gtest/gtest.h" | |
| 12 | |
| 13 namespace gpu { | |
| 14 | |
| 15 class GLTest : public testing::Test { | |
| 16 protected: | |
| 17 virtual void SetUp() { | |
| 18 gl_.Initialize(GLManager::Options()); | |
| 19 } | |
| 20 | |
| 21 virtual void TearDown() { | |
| 22 gl_.Destroy(); | |
| 23 } | |
| 24 | |
| 25 GLManager gl_; | |
| 26 }; | |
| 27 | |
| 28 // Test that GL is at least minimally working. | |
| 29 TEST_F(GLTest, Basic) { | |
| 30 glClearColor(0.0f, 1.0f, 0.0f, 1.0f); | |
| 31 glClear(GL_COLOR_BUFFER_BIT); | |
| 32 uint8 expected[] = { 0, 255, 0, 255, }; | |
| 33 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); | |
| 34 GLTestHelper::CheckGLError("no errors", __LINE__); | |
| 35 } | |
| 36 | |
| 37 TEST_F(GLTest, BasicFBO) { | |
| 38 GLuint tex = 0; | |
| 39 glGenTextures(1, &tex); | |
| 40 GLuint fbo = 0; | |
| 41 glGenFramebuffers(1, &fbo); | |
| 42 glBindTexture(GL_TEXTURE_2D, tex); | |
| 43 scoped_ptr<uint8[]> pixels(new uint8 [16*16*4]); | |
| 44 memset(pixels.get(), 0, 16*16*4); | |
| 45 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, | |
| 46 pixels.get()); | |
| 47 glGenerateMipmap(GL_TEXTURE_2D); | |
| 48 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); | |
| 49 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); | |
| 50 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | |
| 51 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); | |
| 52 glBindFramebuffer(GL_FRAMEBUFFER, fbo); | |
| 53 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, | |
| 54 tex, 0); | |
| 55 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), | |
| 56 glCheckFramebufferStatus(GL_FRAMEBUFFER)); | |
| 57 glClearColor(0.0f, 1.0f, 0.0f, 1.0f); | |
| 58 glClear(GL_COLOR_BUFFER_BIT); | |
| 59 uint8 expected[] = { 0, 255, 0, 255, }; | |
| 60 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 16, 16, 0, expected)); | |
| 61 glDeleteFramebuffers(1, &fbo); | |
| 62 glDeleteTextures(1, &tex); | |
| 63 GLTestHelper::CheckGLError("no errors", __LINE__); | |
| 64 } | |
| 65 | |
| 66 TEST_F(GLTest, SimpleShader) { | |
| 67 static const char* v_shader_str = | |
| 68 "attribute vec4 a_Position;\n" | |
| 69 "void main()\n" | |
| 70 "{\n" | |
| 71 " gl_Position = a_Position;\n" | |
| 72 "}\n"; | |
| 73 static const char* f_shader_str = | |
| 74 "precision mediump float;\n" | |
| 75 "void main()\n" | |
| 76 "{\n" | |
| 77 " gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n" | |
| 78 "}\n"; | |
| 79 | |
| 80 GLuint program = GLTestHelper::LoadProgram(v_shader_str, f_shader_str); | |
| 81 glUseProgram(program); | |
| 82 GLuint position_loc = glGetAttribLocation(program, "a_Position"); | |
| 83 | |
| 84 GLTestHelper::SetupUnitQuad(position_loc); | |
| 85 | |
| 86 uint8 expected_clear[] = { 127, 0, 255, 0, }; | |
| 87 glClearColor(0.5f, 0.0f, 1.0f, 0.0f); | |
| 88 glClear(GL_COLOR_BUFFER_BIT); | |
| 89 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 1, expected_clear)); | |
| 90 uint8 expected_draw[] = { 0, 255, 0, 255, }; | |
| 91 glDrawArrays(GL_TRIANGLES, 0, 6); | |
| 92 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_draw)); | |
| 93 } | |
| 94 | |
| 95 TEST_F(GLTest, GetString) { | |
| 96 EXPECT_STREQ( | |
| 97 "OpenGL ES 2.0 Chromium", | |
| 98 reinterpret_cast<const char*>(glGetString(GL_VERSION))); | |
| 99 EXPECT_STREQ( | |
| 100 "OpenGL ES GLSL ES 1.0 Chromium", | |
| 101 reinterpret_cast<const char*>(glGetString(GL_SHADING_LANGUAGE_VERSION))); | |
| 102 EXPECT_STREQ( | |
| 103 "Chromium", | |
| 104 reinterpret_cast<const char*>(glGetString(GL_RENDERER))); | |
| 105 EXPECT_STREQ( | |
| 106 "Chromium", | |
| 107 reinterpret_cast<const char*>(glGetString(GL_VENDOR))); | |
| 108 } | |
| 109 | |
| 110 } // namespace gpu | |
| 111 | |
| OLD | NEW |