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 |