OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef GL_GLEXT_PROTOTYPES | 5 #ifndef GL_GLEXT_PROTOTYPES |
6 #define GL_GLEXT_PROTOTYPES | 6 #define GL_GLEXT_PROTOTYPES |
7 #endif | 7 #endif |
8 | 8 |
9 #include <GLES2/gl2.h> | 9 #include <GLES2/gl2.h> |
10 #include <GLES2/gl2ext.h> | 10 #include <GLES2/gl2ext.h> |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
66 GLint value = 0; | 66 GLint value = 0; |
67 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); | 67 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); |
68 GLuint fb_id = value; | 68 GLuint fb_id = value; |
69 EXPECT_EQ(framebuffer_id_, fb_id); | 69 EXPECT_EQ(framebuffer_id_, fb_id); |
70 | 70 |
71 // Check that FB is complete. | 71 // Check that FB is complete. |
72 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), | 72 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), |
73 glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 73 glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
74 | 74 |
75 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels); | 75 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels); |
76 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 76 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
no sievers
2014/08/22 18:07:19
nit: EXPECT_EQ(GL_NO_ERROR, glGetError()) here and
dshwang
2014/08/22 19:07:55
Done.
dshwang
2014/08/22 19:11:42
ah... clang preprocessor converts macro to int whi
| |
77 } | |
78 | |
79 TEST_F(GLCopyTextureCHROMIUMTest, InternalFormat) { | |
80 GLint src_formats[] = {GL_ALPHA, GL_RGB, GL_RGBA, | |
81 GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_BGRA_EXT}; | |
82 GLint dest_formats[] = {GL_RGB, GL_RGBA}; | |
83 | |
84 for (size_t src_index = 0; src_index < arraysize(src_formats); src_index++) { | |
85 for (size_t dest_index = 0; dest_index < arraysize(dest_formats); | |
86 dest_index++) { | |
87 glBindTexture(GL_TEXTURE_2D, textures_[0]); | |
88 glTexImage2D(GL_TEXTURE_2D, | |
89 0, | |
90 src_formats[src_index], | |
91 1, | |
92 1, | |
93 0, | |
94 src_formats[src_index], | |
95 GL_UNSIGNED_BYTE, | |
96 NULL); | |
97 EXPECT_EQ(glGetError(), GL_NO_ERROR); | |
98 | |
99 glCopyTextureCHROMIUM(GL_TEXTURE_2D, | |
100 textures_[0], | |
101 textures_[1], | |
102 0, | |
103 dest_formats[dest_index], | |
104 GL_UNSIGNED_BYTE); | |
105 EXPECT_EQ(glGetError(), GL_NO_ERROR) << "src_index:" << src_index | |
106 << " dest_index:" << dest_index; | |
107 } | |
108 } | |
109 | |
no sievers
2014/08/22 18:07:19
nit: can you cut this off into a separate test her
dshwang
2014/08/22 19:07:55
Yes. I separated it.
| |
110 glBindTexture(GL_TEXTURE_2D, textures_[0]); | |
111 glTexImage2D( | |
112 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); | |
113 EXPECT_EQ(glGetError(), GL_NO_ERROR); | |
114 | |
115 // Check unsupported format reports error. | |
116 GLint unsupported_dest_formats[] = {GL_ALPHA, GL_LUMINANCE, | |
117 GL_LUMINANCE_ALPHA, GL_BGRA_EXT}; | |
118 for (size_t dest_index = 0; dest_index < arraysize(unsupported_dest_formats); | |
119 dest_index++) { | |
120 glCopyTextureCHROMIUM(GL_TEXTURE_2D, | |
121 textures_[0], | |
122 textures_[1], | |
123 0, | |
124 unsupported_dest_formats[dest_index], | |
125 GL_UNSIGNED_BYTE); | |
126 EXPECT_EQ(glGetError(), GL_INVALID_VALUE) << "dest_index:" << dest_index; | |
127 } | |
128 } | |
129 | |
130 // Test to ensure that the destination texture is redefined if the properties | |
131 // are different. | |
132 TEST_F(GLCopyTextureCHROMIUMTest, RedefineDestinationTexture) { | |
133 uint8 pixels[4 * 4] = {255u, 0u, 0u, 255u, 255u, 0u, 0u, 255u, | |
134 255u, 0u, 0u, 255u, 255u, 0u, 0u, 255u}; | |
135 | |
136 glBindTexture(GL_TEXTURE_2D, textures_[0]); | |
137 glTexImage2D( | |
138 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); | |
139 | |
140 glBindTexture(GL_TEXTURE_2D, textures_[1]); | |
141 glTexImage2D(GL_TEXTURE_2D, | |
142 0, | |
143 GL_BGRA_EXT, | |
144 1, | |
145 1, | |
146 0, | |
147 GL_BGRA_EXT, | |
148 GL_UNSIGNED_BYTE, | |
149 pixels); | |
150 EXPECT_EQ(glGetError(), GL_NO_ERROR); | |
151 | |
152 // GL_INVALID_OPERATION due to "intrinsic format" != "internal format". | |
153 glTexSubImage2D( | |
154 GL_TEXTURE_2D, 0, 0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels); | |
155 EXPECT_EQ(glGetError(), GL_INVALID_OPERATION); | |
156 // GL_INVALID_VALUE due to bad dimensions. | |
157 glTexSubImage2D( | |
158 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_BGRA_EXT, GL_UNSIGNED_BYTE, pixels); | |
159 EXPECT_EQ(glGetError(), GL_INVALID_VALUE); | |
no sievers
2014/08/22 18:07:19
hmm not sure these tests for TexSubImage2D() behav
dshwang
2014/08/22 19:07:55
Yes, I piggy back TexSubImage2D()'s error check, b
| |
160 | |
161 // If the dest texture has different properties, glCopyTextureCHROMIUM() | |
162 // redefines them. | |
163 glCopyTextureCHROMIUM( | |
164 GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, GL_UNSIGNED_BYTE); | |
165 EXPECT_TRUE(glGetError() == GL_NO_ERROR); | |
166 | |
167 // glTexSubImage2D() succeeds because textures_[1] is redefined into 2x2 | |
168 // dimension and GL_RGBA format. | |
169 glBindTexture(GL_TEXTURE_2D, textures_[1]); | |
170 glTexSubImage2D( | |
171 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels); | |
172 EXPECT_EQ(glGetError(), GL_NO_ERROR); | |
173 | |
174 // Check the FB is still bound. | |
175 GLint value = 0; | |
176 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); | |
177 GLuint fb_id = value; | |
178 EXPECT_EQ(framebuffer_id_, fb_id); | |
179 | |
180 // Check that FB is complete. | |
181 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), | |
182 glCheckFramebufferStatus(GL_FRAMEBUFFER)); | |
183 | |
184 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, pixels); | |
no sievers
2014/08/22 18:07:19
Althought you define all pixels to the same value
dshwang
2014/08/22 19:07:55
That's right. Now I compare it with &pixel[12]
| |
185 EXPECT_EQ(glGetError(), GL_NO_ERROR); | |
77 } | 186 } |
78 | 187 |
79 // Test that the extension respects the flip-y pixel storage setting. | 188 // Test that the extension respects the flip-y pixel storage setting. |
80 TEST_F(GLCopyTextureCHROMIUMTest, FlipY) { | 189 TEST_F(GLCopyTextureCHROMIUMTest, FlipY) { |
81 uint8 pixels[2][2][4]; | 190 uint8 pixels[2][2][4]; |
82 for (int x = 0; x < 2; ++x) { | 191 for (int x = 0; x < 2; ++x) { |
83 for (int y = 0; y < 2; ++y) { | 192 for (int y = 0; y < 2; ++y) { |
84 pixels[y][x][0] = x + y; | 193 pixels[y][x][0] = x + y; |
85 pixels[y][x][1] = x + y; | 194 pixels[y][x][1] = x + y; |
86 pixels[y][x][2] = x + y; | 195 pixels[y][x][2] = x + y; |
87 pixels[y][x][3] = 255u; | 196 pixels[y][x][3] = 255u; |
88 } | 197 } |
89 } | 198 } |
90 | 199 |
91 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 200 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
92 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 201 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
93 pixels); | 202 pixels); |
94 | 203 |
95 glPixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, GL_TRUE); | 204 glPixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, GL_TRUE); |
96 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, | 205 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, |
97 GL_UNSIGNED_BYTE); | 206 GL_UNSIGNED_BYTE); |
98 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 207 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
99 | 208 |
100 uint8 copied_pixels[2][2][4] = {{{0}}}; | 209 uint8 copied_pixels[2][2][4] = {{{0}}}; |
101 glReadPixels(0, 0, 2, 2, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels); | 210 glReadPixels(0, 0, 2, 2, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels); |
102 for (int x = 0; x < 2; ++x) { | 211 for (int x = 0; x < 2; ++x) { |
103 for (int y = 0; y < 2; ++y) { | 212 for (int y = 0; y < 2; ++y) { |
104 EXPECT_EQ(pixels[1-y][x][0], copied_pixels[y][x][0]); | 213 EXPECT_EQ(pixels[1-y][x][0], copied_pixels[y][x][0]); |
105 EXPECT_EQ(pixels[1-y][x][1], copied_pixels[y][x][1]); | 214 EXPECT_EQ(pixels[1-y][x][1], copied_pixels[y][x][1]); |
106 EXPECT_EQ(pixels[1-y][x][2], copied_pixels[y][x][2]); | 215 EXPECT_EQ(pixels[1-y][x][2], copied_pixels[y][x][2]); |
107 EXPECT_EQ(pixels[1-y][x][3], copied_pixels[y][x][3]); | 216 EXPECT_EQ(pixels[1-y][x][3], copied_pixels[y][x][3]); |
108 } | 217 } |
109 } | 218 } |
110 | 219 |
111 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 220 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
112 } | 221 } |
113 | 222 |
114 // Test that the extension respects the GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM | 223 // Test that the extension respects the GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM |
115 // storage setting. | 224 // storage setting. |
116 TEST_F(GLCopyTextureCHROMIUMTest, PremultiplyAlpha) { | 225 TEST_F(GLCopyTextureCHROMIUMTest, PremultiplyAlpha) { |
117 uint8 pixels[1 * 4] = { 2, 2, 2, 128 }; | 226 uint8 pixels[1 * 4] = { 2, 2, 2, 128 }; |
118 | 227 |
119 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 228 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
120 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 229 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
121 pixels); | 230 pixels); |
122 | 231 |
123 glPixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE); | 232 glPixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE); |
124 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, | 233 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, |
125 GL_UNSIGNED_BYTE); | 234 GL_UNSIGNED_BYTE); |
126 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 235 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
127 | 236 |
128 uint8 copied_pixels[1 * 4] = {0}; | 237 uint8 copied_pixels[1 * 4] = {0}; |
129 glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels); | 238 glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels); |
130 EXPECT_EQ(1u, copied_pixels[0]); | 239 EXPECT_EQ(1u, copied_pixels[0]); |
131 EXPECT_EQ(1u, copied_pixels[1]); | 240 EXPECT_EQ(1u, copied_pixels[1]); |
132 EXPECT_EQ(1u, copied_pixels[2]); | 241 EXPECT_EQ(1u, copied_pixels[2]); |
133 EXPECT_EQ(128u, copied_pixels[3]); | 242 EXPECT_EQ(128u, copied_pixels[3]); |
134 | 243 |
135 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 244 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
136 } | 245 } |
137 | 246 |
138 // Test that the extension respects the GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM | 247 // Test that the extension respects the GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM |
139 // storage setting. | 248 // storage setting. |
140 TEST_F(GLCopyTextureCHROMIUMTest, UnpremultiplyAlpha) { | 249 TEST_F(GLCopyTextureCHROMIUMTest, UnpremultiplyAlpha) { |
141 uint8 pixels[1 * 4] = { 16, 16, 16, 128 }; | 250 uint8 pixels[1 * 4] = { 16, 16, 16, 128 }; |
142 | 251 |
143 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 252 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
144 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 253 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
145 pixels); | 254 pixels); |
146 | 255 |
147 glPixelStorei(GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE); | 256 glPixelStorei(GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE); |
148 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, | 257 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, |
149 GL_UNSIGNED_BYTE); | 258 GL_UNSIGNED_BYTE); |
150 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 259 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
151 | 260 |
152 uint8 copied_pixels[1 * 4] = {0}; | 261 uint8 copied_pixels[1 * 4] = {0}; |
153 glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels); | 262 glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels); |
154 EXPECT_EQ(32u, copied_pixels[0]); | 263 EXPECT_EQ(32u, copied_pixels[0]); |
155 EXPECT_EQ(32u, copied_pixels[1]); | 264 EXPECT_EQ(32u, copied_pixels[1]); |
156 EXPECT_EQ(32u, copied_pixels[2]); | 265 EXPECT_EQ(32u, copied_pixels[2]); |
157 EXPECT_EQ(128u, copied_pixels[3]); | 266 EXPECT_EQ(128u, copied_pixels[3]); |
158 | 267 |
159 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 268 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
160 } | 269 } |
161 | 270 |
162 TEST_F(GLCopyTextureCHROMIUMTest, FlipYAndPremultiplyAlpha) { | 271 TEST_F(GLCopyTextureCHROMIUMTest, FlipYAndPremultiplyAlpha) { |
163 uint8 pixels[2][2][4]; | 272 uint8 pixels[2][2][4]; |
164 for (int x = 0; x < 2; ++x) { | 273 for (int x = 0; x < 2; ++x) { |
165 for (int y = 0; y < 2; ++y) { | 274 for (int y = 0; y < 2; ++y) { |
166 uint8 color = 16 * x + 16 * y; | 275 uint8 color = 16 * x + 16 * y; |
167 pixels[y][x][0] = color; | 276 pixels[y][x][0] = color; |
168 pixels[y][x][1] = color; | 277 pixels[y][x][1] = color; |
169 pixels[y][x][2] = color; | 278 pixels[y][x][2] = color; |
170 pixels[y][x][3] = 128u; | 279 pixels[y][x][3] = 128u; |
171 } | 280 } |
172 } | 281 } |
173 | 282 |
174 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 283 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
175 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 284 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
176 pixels); | 285 pixels); |
177 | 286 |
178 glPixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, GL_TRUE); | 287 glPixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, GL_TRUE); |
179 glPixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE); | 288 glPixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE); |
180 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, | 289 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, |
181 GL_UNSIGNED_BYTE); | 290 GL_UNSIGNED_BYTE); |
182 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 291 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
183 | 292 |
184 uint8 copied_pixels[2][2][4] = {{{0}}}; | 293 uint8 copied_pixels[2][2][4] = {{{0}}}; |
185 glReadPixels(0, 0, 2, 2, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels); | 294 glReadPixels(0, 0, 2, 2, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels); |
186 for (int x = 0; x < 2; ++x) { | 295 for (int x = 0; x < 2; ++x) { |
187 for (int y = 0; y < 2; ++y) { | 296 for (int y = 0; y < 2; ++y) { |
188 EXPECT_EQ(pixels[1-y][x][0] / 2, copied_pixels[y][x][0]); | 297 EXPECT_EQ(pixels[1-y][x][0] / 2, copied_pixels[y][x][0]); |
189 EXPECT_EQ(pixels[1-y][x][1] / 2, copied_pixels[y][x][1]); | 298 EXPECT_EQ(pixels[1-y][x][1] / 2, copied_pixels[y][x][1]); |
190 EXPECT_EQ(pixels[1-y][x][2] / 2, copied_pixels[y][x][2]); | 299 EXPECT_EQ(pixels[1-y][x][2] / 2, copied_pixels[y][x][2]); |
191 EXPECT_EQ(pixels[1-y][x][3], copied_pixels[y][x][3]); | 300 EXPECT_EQ(pixels[1-y][x][3], copied_pixels[y][x][3]); |
192 } | 301 } |
193 } | 302 } |
194 | 303 |
195 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 304 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
196 } | 305 } |
197 | 306 |
198 TEST_F(GLCopyTextureCHROMIUMTest, FlipYAndUnpremultiplyAlpha) { | 307 TEST_F(GLCopyTextureCHROMIUMTest, FlipYAndUnpremultiplyAlpha) { |
199 uint8 pixels[2][2][4]; | 308 uint8 pixels[2][2][4]; |
200 for (int x = 0; x < 2; ++x) { | 309 for (int x = 0; x < 2; ++x) { |
201 for (int y = 0; y < 2; ++y) { | 310 for (int y = 0; y < 2; ++y) { |
202 uint8 color = 16 * x + 16 * y; | 311 uint8 color = 16 * x + 16 * y; |
203 pixels[y][x][0] = color; | 312 pixels[y][x][0] = color; |
204 pixels[y][x][1] = color; | 313 pixels[y][x][1] = color; |
205 pixels[y][x][2] = color; | 314 pixels[y][x][2] = color; |
206 pixels[y][x][3] = 128u; | 315 pixels[y][x][3] = 128u; |
207 } | 316 } |
208 } | 317 } |
209 | 318 |
210 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 319 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
211 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 320 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
212 pixels); | 321 pixels); |
213 | 322 |
214 glPixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, GL_TRUE); | 323 glPixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, GL_TRUE); |
215 glPixelStorei(GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE); | 324 glPixelStorei(GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, GL_TRUE); |
216 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, | 325 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, |
217 GL_UNSIGNED_BYTE); | 326 GL_UNSIGNED_BYTE); |
218 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 327 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
219 | 328 |
220 uint8 copied_pixels[2][2][4] = {{{0}}}; | 329 uint8 copied_pixels[2][2][4] = {{{0}}}; |
221 glReadPixels(0, 0, 2, 2, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels); | 330 glReadPixels(0, 0, 2, 2, GL_RGBA, GL_UNSIGNED_BYTE, copied_pixels); |
222 for (int x = 0; x < 2; ++x) { | 331 for (int x = 0; x < 2; ++x) { |
223 for (int y = 0; y < 2; ++y) { | 332 for (int y = 0; y < 2; ++y) { |
224 EXPECT_EQ(pixels[1-y][x][0] * 2, copied_pixels[y][x][0]); | 333 EXPECT_EQ(pixels[1-y][x][0] * 2, copied_pixels[y][x][0]); |
225 EXPECT_EQ(pixels[1-y][x][1] * 2, copied_pixels[y][x][1]); | 334 EXPECT_EQ(pixels[1-y][x][1] * 2, copied_pixels[y][x][1]); |
226 EXPECT_EQ(pixels[1-y][x][2] * 2, copied_pixels[y][x][2]); | 335 EXPECT_EQ(pixels[1-y][x][2] * 2, copied_pixels[y][x][2]); |
227 EXPECT_EQ(pixels[1-y][x][3], copied_pixels[y][x][3]); | 336 EXPECT_EQ(pixels[1-y][x][3], copied_pixels[y][x][3]); |
228 } | 337 } |
229 } | 338 } |
230 | 339 |
231 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 340 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
232 } | 341 } |
233 | 342 |
234 namespace { | 343 namespace { |
235 | 344 |
236 void glEnableDisable(GLint param, GLboolean value) { | 345 void glEnableDisable(GLint param, GLboolean value) { |
237 if (value) | 346 if (value) |
238 glEnable(param); | 347 glEnable(param); |
239 else | 348 else |
240 glDisable(param); | 349 glDisable(param); |
241 } | 350 } |
(...skipping 19 matching lines...) Expand all Loading... | |
261 glEnableDisable(GL_STENCIL_TEST, setting); | 370 glEnableDisable(GL_STENCIL_TEST, setting); |
262 glEnableDisable(GL_CULL_FACE, setting); | 371 glEnableDisable(GL_CULL_FACE, setting); |
263 glEnableDisable(GL_BLEND, setting); | 372 glEnableDisable(GL_BLEND, setting); |
264 glColorMask(setting, setting, setting, setting); | 373 glColorMask(setting, setting, setting, setting); |
265 glDepthMask(setting); | 374 glDepthMask(setting); |
266 | 375 |
267 glActiveTexture(GL_TEXTURE1 + x); | 376 glActiveTexture(GL_TEXTURE1 + x); |
268 | 377 |
269 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, | 378 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, |
270 GL_RGBA, GL_UNSIGNED_BYTE); | 379 GL_RGBA, GL_UNSIGNED_BYTE); |
271 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 380 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
272 | 381 |
273 EXPECT_EQ(setting, glIsEnabled(GL_DEPTH_TEST)); | 382 EXPECT_EQ(setting, glIsEnabled(GL_DEPTH_TEST)); |
274 EXPECT_EQ(setting, glIsEnabled(GL_SCISSOR_TEST)); | 383 EXPECT_EQ(setting, glIsEnabled(GL_SCISSOR_TEST)); |
275 EXPECT_EQ(setting, glIsEnabled(GL_STENCIL_TEST)); | 384 EXPECT_EQ(setting, glIsEnabled(GL_STENCIL_TEST)); |
276 EXPECT_EQ(setting, glIsEnabled(GL_CULL_FACE)); | 385 EXPECT_EQ(setting, glIsEnabled(GL_CULL_FACE)); |
277 EXPECT_EQ(setting, glIsEnabled(GL_BLEND)); | 386 EXPECT_EQ(setting, glIsEnabled(GL_BLEND)); |
278 | 387 |
279 GLboolean bool_array[4] = { GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE }; | 388 GLboolean bool_array[4] = { GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE }; |
280 glGetBooleanv(GL_DEPTH_WRITEMASK, bool_array); | 389 glGetBooleanv(GL_DEPTH_WRITEMASK, bool_array); |
281 EXPECT_EQ(setting, bool_array[0]); | 390 EXPECT_EQ(setting, bool_array[0]); |
282 | 391 |
283 bool_array[0] = GL_FALSE; | 392 bool_array[0] = GL_FALSE; |
284 glGetBooleanv(GL_COLOR_WRITEMASK, bool_array); | 393 glGetBooleanv(GL_COLOR_WRITEMASK, bool_array); |
285 EXPECT_EQ(setting, bool_array[0]); | 394 EXPECT_EQ(setting, bool_array[0]); |
286 EXPECT_EQ(setting, bool_array[1]); | 395 EXPECT_EQ(setting, bool_array[1]); |
287 EXPECT_EQ(setting, bool_array[2]); | 396 EXPECT_EQ(setting, bool_array[2]); |
288 EXPECT_EQ(setting, bool_array[3]); | 397 EXPECT_EQ(setting, bool_array[3]); |
289 | 398 |
290 GLint active_texture = 0; | 399 GLint active_texture = 0; |
291 glGetIntegerv(GL_ACTIVE_TEXTURE, &active_texture); | 400 glGetIntegerv(GL_ACTIVE_TEXTURE, &active_texture); |
292 EXPECT_EQ(GL_TEXTURE1 + x, active_texture); | 401 EXPECT_EQ(GL_TEXTURE1 + x, active_texture); |
293 } | 402 } |
294 | 403 |
295 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 404 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
296 }; | 405 }; |
297 | 406 |
298 // Verify that invocation of the extension does not modify the bound | 407 // Verify that invocation of the extension does not modify the bound |
299 // texture state. | 408 // texture state. |
300 TEST_F(GLCopyTextureCHROMIUMTest, TextureStatePreserved) { | 409 TEST_F(GLCopyTextureCHROMIUMTest, TextureStatePreserved) { |
301 // Setup the texture used for the extension invocation. | 410 // Setup the texture used for the extension invocation. |
302 uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; | 411 uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; |
303 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 412 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
304 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 413 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
305 pixels); | 414 pixels); |
306 | 415 |
307 GLuint texture_ids[2]; | 416 GLuint texture_ids[2]; |
308 glGenTextures(2, texture_ids); | 417 glGenTextures(2, texture_ids); |
309 | 418 |
310 glActiveTexture(GL_TEXTURE0); | 419 glActiveTexture(GL_TEXTURE0); |
311 glBindTexture(GL_TEXTURE_2D, texture_ids[0]); | 420 glBindTexture(GL_TEXTURE_2D, texture_ids[0]); |
312 | 421 |
313 glActiveTexture(GL_TEXTURE1); | 422 glActiveTexture(GL_TEXTURE1); |
314 glBindTexture(GL_TEXTURE_2D, texture_ids[1]); | 423 glBindTexture(GL_TEXTURE_2D, texture_ids[1]); |
315 | 424 |
316 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, | 425 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, |
317 GL_RGBA, GL_UNSIGNED_BYTE); | 426 GL_RGBA, GL_UNSIGNED_BYTE); |
318 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 427 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
319 | 428 |
320 GLint active_texture = 0; | 429 GLint active_texture = 0; |
321 glGetIntegerv(GL_ACTIVE_TEXTURE, &active_texture); | 430 glGetIntegerv(GL_ACTIVE_TEXTURE, &active_texture); |
322 EXPECT_EQ(GL_TEXTURE1, active_texture); | 431 EXPECT_EQ(GL_TEXTURE1, active_texture); |
323 | 432 |
324 GLint bound_texture = 0; | 433 GLint bound_texture = 0; |
325 glGetIntegerv(GL_TEXTURE_BINDING_2D, &bound_texture); | 434 glGetIntegerv(GL_TEXTURE_BINDING_2D, &bound_texture); |
326 EXPECT_EQ(texture_ids[1], static_cast<GLuint>(bound_texture)); | 435 EXPECT_EQ(texture_ids[1], static_cast<GLuint>(bound_texture)); |
327 glBindTexture(GL_TEXTURE_2D, 0); | 436 glBindTexture(GL_TEXTURE_2D, 0); |
328 | 437 |
329 bound_texture = 0; | 438 bound_texture = 0; |
330 glActiveTexture(GL_TEXTURE0); | 439 glActiveTexture(GL_TEXTURE0); |
331 glGetIntegerv(GL_TEXTURE_BINDING_2D, &bound_texture); | 440 glGetIntegerv(GL_TEXTURE_BINDING_2D, &bound_texture); |
332 EXPECT_EQ(texture_ids[0], static_cast<GLuint>(bound_texture)); | 441 EXPECT_EQ(texture_ids[0], static_cast<GLuint>(bound_texture)); |
333 glBindTexture(GL_TEXTURE_2D, 0); | 442 glBindTexture(GL_TEXTURE_2D, 0); |
334 | 443 |
335 glDeleteTextures(2, texture_ids); | 444 glDeleteTextures(2, texture_ids); |
336 | 445 |
337 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 446 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
338 } | 447 } |
339 | 448 |
340 // Verify that invocation of the extension does not perturb the currently | 449 // Verify that invocation of the extension does not perturb the currently |
341 // bound FBO state. | 450 // bound FBO state. |
342 TEST_F(GLCopyTextureCHROMIUMTest, FBOStatePreserved) { | 451 TEST_F(GLCopyTextureCHROMIUMTest, FBOStatePreserved) { |
343 // Setup the texture used for the extension invocation. | 452 // Setup the texture used for the extension invocation. |
344 uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; | 453 uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; |
345 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 454 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
346 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 455 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
347 pixels); | 456 pixels); |
(...skipping 20 matching lines...) Expand all Loading... | |
368 GL_FRAMEBUFFER_COMPLETE == glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 477 GL_FRAMEBUFFER_COMPLETE == glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
369 | 478 |
370 // Test that we can write to the bound framebuffer | 479 // Test that we can write to the bound framebuffer |
371 uint8 expected_color[4] = { 255u, 255u, 0, 255u }; | 480 uint8 expected_color[4] = { 255u, 255u, 0, 255u }; |
372 glClearColor(1.0, 1.0, 0, 1.0); | 481 glClearColor(1.0, 1.0, 0, 1.0); |
373 glClear(GL_COLOR_BUFFER_BIT); | 482 glClear(GL_COLOR_BUFFER_BIT); |
374 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color); | 483 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color); |
375 | 484 |
376 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, | 485 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, |
377 GL_RGBA, GL_UNSIGNED_BYTE); | 486 GL_RGBA, GL_UNSIGNED_BYTE); |
378 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 487 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
379 | 488 |
380 EXPECT_TRUE(glIsFramebuffer(framebuffer_id)); | 489 EXPECT_TRUE(glIsFramebuffer(framebuffer_id)); |
381 | 490 |
382 // Ensure that reading from the framebuffer produces correct pixels. | 491 // Ensure that reading from the framebuffer produces correct pixels. |
383 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color); | 492 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color); |
384 | 493 |
385 uint8 expected_color2[4] = { 255u, 0, 255u, 255u }; | 494 uint8 expected_color2[4] = { 255u, 0, 255u, 255u }; |
386 glClearColor(1.0, 0, 1.0, 1.0); | 495 glClearColor(1.0, 0, 1.0, 1.0); |
387 glClear(GL_COLOR_BUFFER_BIT); | 496 glClear(GL_COLOR_BUFFER_BIT); |
388 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color2); | 497 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color2); |
(...skipping 23 matching lines...) Expand all Loading... | |
412 fbo_params = 0; | 521 fbo_params = 0; |
413 glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, | 522 glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, |
414 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, | 523 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, |
415 &fbo_params); | 524 &fbo_params); |
416 EXPECT_EQ(renderbuffer_id, static_cast<GLuint>(fbo_params)); | 525 EXPECT_EQ(renderbuffer_id, static_cast<GLuint>(fbo_params)); |
417 | 526 |
418 glDeleteRenderbuffers(1, &renderbuffer_id); | 527 glDeleteRenderbuffers(1, &renderbuffer_id); |
419 glDeleteTextures(1, &texture_id); | 528 glDeleteTextures(1, &texture_id); |
420 glDeleteFramebuffers(1, &framebuffer_id); | 529 glDeleteFramebuffers(1, &framebuffer_id); |
421 | 530 |
422 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 531 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
423 } | 532 } |
424 | 533 |
425 TEST_F(GLCopyTextureCHROMIUMTest, ProgramStatePreservation) { | 534 TEST_F(GLCopyTextureCHROMIUMTest, ProgramStatePreservation) { |
426 // unbind the one created in setup. | 535 // unbind the one created in setup. |
427 glBindFramebuffer(GL_FRAMEBUFFER, 0); | 536 glBindFramebuffer(GL_FRAMEBUFFER, 0); |
428 glBindTexture(GL_TEXTURE_2D, 0); | 537 glBindTexture(GL_TEXTURE_2D, 0); |
429 | 538 |
430 GLManager gl2; | 539 GLManager gl2; |
431 GLManager::Options options; | 540 GLManager::Options options; |
432 options.size = gfx::Size(16, 16); | 541 options.size = gfx::Size(16, 16); |
(...skipping 15 matching lines...) Expand all Loading... | |
448 "}\n"; | 557 "}\n"; |
449 | 558 |
450 GLuint program = GLTestHelper::LoadProgram(v_shader_str, f_shader_str); | 559 GLuint program = GLTestHelper::LoadProgram(v_shader_str, f_shader_str); |
451 glUseProgram(program); | 560 glUseProgram(program); |
452 GLuint position_loc = glGetAttribLocation(program, "g_Position"); | 561 GLuint position_loc = glGetAttribLocation(program, "g_Position"); |
453 glFlush(); | 562 glFlush(); |
454 | 563 |
455 // Delete program from other context. | 564 // Delete program from other context. |
456 gl2.MakeCurrent(); | 565 gl2.MakeCurrent(); |
457 glDeleteProgram(program); | 566 glDeleteProgram(program); |
458 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 567 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
459 glFlush(); | 568 glFlush(); |
460 | 569 |
461 // Program should still be usable on this context. | 570 // Program should still be usable on this context. |
462 gl_.MakeCurrent(); | 571 gl_.MakeCurrent(); |
463 | 572 |
464 GLTestHelper::SetupUnitQuad(position_loc); | 573 GLTestHelper::SetupUnitQuad(position_loc); |
465 | 574 |
466 // test using program before | 575 // test using program before |
467 uint8 expected[] = { 0, 255, 0, 255, }; | 576 uint8 expected[] = { 0, 255, 0, 255, }; |
468 uint8 zero[] = { 0, 0, 0, 0, }; | 577 uint8 zero[] = { 0, 0, 0, 0, }; |
469 glClear(GL_COLOR_BUFFER_BIT); | 578 glClear(GL_COLOR_BUFFER_BIT); |
470 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero)); | 579 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero)); |
471 glDrawArrays(GL_TRIANGLES, 0, 6); | 580 glDrawArrays(GL_TRIANGLES, 0, 6); |
472 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); | 581 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); |
473 | 582 |
474 // Call copyTextureCHROMIUM | 583 // Call copyTextureCHROMIUM |
475 uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; | 584 uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; |
476 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 585 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
477 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 586 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
478 pixels); | 587 pixels); |
479 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, | 588 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, |
480 GL_UNSIGNED_BYTE); | 589 GL_UNSIGNED_BYTE); |
481 | 590 |
482 // test using program after | 591 // test using program after |
483 glClear(GL_COLOR_BUFFER_BIT); | 592 glClear(GL_COLOR_BUFFER_BIT); |
484 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero)); | 593 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero)); |
485 glDrawArrays(GL_TRIANGLES, 0, 6); | 594 glDrawArrays(GL_TRIANGLES, 0, 6); |
486 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); | 595 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); |
487 | 596 |
488 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 597 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
489 | 598 |
490 gl2.MakeCurrent(); | 599 gl2.MakeCurrent(); |
491 gl2.Destroy(); | 600 gl2.Destroy(); |
492 gl_.MakeCurrent(); | 601 gl_.MakeCurrent(); |
493 } | 602 } |
494 | 603 |
495 // Test that glCopyTextureCHROMIUM doesn't leak uninitialized textures. | 604 // Test that glCopyTextureCHROMIUM doesn't leak uninitialized textures. |
496 TEST_F(GLCopyTextureCHROMIUMTest, UninitializedSource) { | 605 TEST_F(GLCopyTextureCHROMIUMTest, UninitializedSource) { |
497 const GLsizei kWidth = 64, kHeight = 64; | 606 const GLsizei kWidth = 64, kHeight = 64; |
498 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 607 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
499 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, | 608 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, |
500 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); | 609 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); |
501 | 610 |
502 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, | 611 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, GL_RGBA, |
503 GL_UNSIGNED_BYTE); | 612 GL_UNSIGNED_BYTE); |
504 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 613 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
505 | 614 |
506 uint8 pixels[kHeight][kWidth][4] = {{{1}}}; | 615 uint8 pixels[kHeight][kWidth][4] = {{{1}}}; |
507 glReadPixels(0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, pixels); | 616 glReadPixels(0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, pixels); |
508 for (int x = 0; x < kWidth; ++x) { | 617 for (int x = 0; x < kWidth; ++x) { |
509 for (int y = 0; y < kHeight; ++y) { | 618 for (int y = 0; y < kHeight; ++y) { |
510 EXPECT_EQ(0, pixels[y][x][0]); | 619 EXPECT_EQ(0, pixels[y][x][0]); |
511 EXPECT_EQ(0, pixels[y][x][1]); | 620 EXPECT_EQ(0, pixels[y][x][1]); |
512 EXPECT_EQ(0, pixels[y][x][2]); | 621 EXPECT_EQ(0, pixels[y][x][2]); |
513 EXPECT_EQ(0, pixels[y][x][3]); | 622 EXPECT_EQ(0, pixels[y][x][3]); |
514 } | 623 } |
515 } | 624 } |
516 | 625 |
517 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 626 EXPECT_EQ(glGetError(), GL_NO_ERROR); |
518 } | 627 } |
519 | 628 |
520 } // namespace gpu | 629 } // namespace gpu |
OLD | NEW |