Upstream version 8.37.180.0
[platform/framework/web/crosswalk.git] / src / third_party / angle / tests / angle_tests / ClearTest.cpp
1 #include "ANGLETest.h"
2
3 class ClearTest : public ANGLETest
4 {
5 protected:
6     ClearTest()
7     {
8         setWindowWidth(128);
9         setWindowHeight(128);
10         setConfigRedBits(8);
11         setConfigGreenBits(8);
12         setConfigBlueBits(8);
13         setConfigAlphaBits(8);
14         setConfigDepthBits(24);
15     }
16
17     virtual void SetUp()
18     {
19         ANGLETest::SetUp();
20
21         const std::string vertexShaderSource = SHADER_SOURCE
22         (
23             precision highp float;
24             attribute vec4 position;
25
26             void main()
27             {
28                 gl_Position = position;
29             }
30         );
31
32         const std::string fragmentShaderSource = SHADER_SOURCE
33         (
34             precision highp float;
35
36             void main()
37             {
38                 gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
39             }
40         );
41
42         mProgram = compileProgram(vertexShaderSource, fragmentShaderSource);
43         if (mProgram == 0)
44         {
45             FAIL() << "shader compilation failed.";
46         }
47     }
48
49     virtual void TearDown()
50     {
51         glDeleteProgram(mProgram);
52
53         ANGLETest::TearDown();
54     }
55
56     GLuint mProgram;
57 };
58
59 TEST_F(ClearTest, clear_issue)
60 {
61     EXPECT_GL_NO_ERROR();
62
63     glEnable(GL_DEPTH_TEST);
64     glDepthFunc(GL_LEQUAL);
65
66     glClearColor(0.0, 1.0, 0.0, 1.0);
67     glClearDepthf(0.0);
68     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
69
70     EXPECT_GL_NO_ERROR();
71
72     GLuint fbo;
73     glGenFramebuffers(1, &fbo);
74     glBindFramebuffer(GL_FRAMEBUFFER, fbo);
75
76     GLuint rbo;
77     glGenRenderbuffers(1, &rbo);
78     glBindRenderbuffer(GL_RENDERBUFFER, rbo);
79     glRenderbufferStorage(GL_RENDERBUFFER, GL_RGB565, 16, 16);
80
81     EXPECT_GL_NO_ERROR();
82
83     glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rbo);
84
85     EXPECT_GL_NO_ERROR();
86
87     glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
88     glClearDepthf(1.0f);
89     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
90
91     EXPECT_GL_NO_ERROR();
92
93     glBindFramebuffer(GL_FRAMEBUFFER, 0);
94     glBindBuffer(GL_ARRAY_BUFFER, 0);
95
96     drawQuad(mProgram, "position", 0.5f);
97
98     EXPECT_PIXEL_EQ(0, 0, 0, 255, 0, 255);
99 }