| OLD | NEW |
| 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2016 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 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 GLint value = 0; | 113 GLint value = 0; |
| 114 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); | 114 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); |
| 115 GLuint fb_id = value; | 115 GLuint fb_id = value; |
| 116 EXPECT_EQ(framebuffer_id_, fb_id); | 116 EXPECT_EQ(framebuffer_id_, fb_id); |
| 117 | 117 |
| 118 // Check that FB is complete. | 118 // Check that FB is complete. |
| 119 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), | 119 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), |
| 120 glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 120 glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
| 121 | 121 |
| 122 uint8_t pixels[1 * 4] = {0u, 255u, 0u, 255u}; | 122 uint8_t pixels[1 * 4] = {0u, 255u, 0u, 255u}; |
| 123 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels); | 123 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels, nullptr); |
| 124 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 124 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 125 } | 125 } |
| 126 | 126 |
| 127 TEST_F(GLApplyScreenSpaceAntialiasingCHROMIUMTest, DefaultFBO) { | 127 TEST_F(GLApplyScreenSpaceAntialiasingCHROMIUMTest, DefaultFBO) { |
| 128 if (!available_) | 128 if (!available_) |
| 129 return; | 129 return; |
| 130 | 130 |
| 131 glBindFramebuffer(GL_FRAMEBUFFER, 0); | 131 glBindFramebuffer(GL_FRAMEBUFFER, 0); |
| 132 glApplyScreenSpaceAntialiasingCHROMIUM(); | 132 glApplyScreenSpaceAntialiasingCHROMIUM(); |
| 133 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError()); | 133 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 152 continue; | 152 continue; |
| 153 | 153 |
| 154 glClear(GL_COLOR_BUFFER_BIT); | 154 glClear(GL_COLOR_BUFFER_BIT); |
| 155 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 155 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 156 | 156 |
| 157 glApplyScreenSpaceAntialiasingCHROMIUM(); | 157 glApplyScreenSpaceAntialiasingCHROMIUM(); |
| 158 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()) << "index:" | 158 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()) << "index:" |
| 159 << index; | 159 << index; |
| 160 | 160 |
| 161 uint8_t pixels[1 * 4] = {0u, 255u, 0u, 255u}; | 161 uint8_t pixels[1 * 4] = {0u, 255u, 0u, 255u}; |
| 162 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels); | 162 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels, nullptr); |
| 163 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 163 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 164 } | 164 } |
| 165 } | 165 } |
| 166 | 166 |
| 167 TEST_F(GLApplyScreenSpaceAntialiasingCHROMIUMTest, ImmutableTexture) { | 167 TEST_F(GLApplyScreenSpaceAntialiasingCHROMIUMTest, ImmutableTexture) { |
| 168 if (!available_) | 168 if (!available_) |
| 169 return; | 169 return; |
| 170 | 170 |
| 171 if (!GLTestHelper::HasExtension("GL_EXT_texture_storage")) { | 171 if (!GLTestHelper::HasExtension("GL_EXT_texture_storage")) { |
| 172 LOG(INFO) << "GL_EXT_texture_storage not supported. Skipping test..."; | 172 LOG(INFO) << "GL_EXT_texture_storage not supported. Skipping test..."; |
| 173 return; | 173 return; |
| 174 } | 174 } |
| 175 GLenum internal_formats[] = {GL_RGB8_OES, GL_RGBA8_OES, GL_BGRA8_EXT}; | 175 GLenum internal_formats[] = {GL_RGB8_OES, GL_RGBA8_OES, GL_BGRA8_EXT}; |
| 176 for (auto internal_format : internal_formats) { | 176 for (auto internal_format : internal_formats) { |
| 177 glDeleteTextures(1, &textures_); | 177 glDeleteTextures(1, &textures_); |
| 178 glDeleteFramebuffers(1, &framebuffer_id_); | 178 glDeleteFramebuffers(1, &framebuffer_id_); |
| 179 CreateAndBindDestinationTextureAndFBO(GL_TEXTURE_2D); | 179 CreateAndBindDestinationTextureAndFBO(GL_TEXTURE_2D); |
| 180 glTexStorage2DEXT(GL_TEXTURE_2D, 1, internal_format, 1, 1); | 180 glTexStorage2DEXT(GL_TEXTURE_2D, 1, internal_format, 1, 1); |
| 181 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 181 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 182 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), | 182 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), |
| 183 glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 183 glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
| 184 | 184 |
| 185 glClear(GL_COLOR_BUFFER_BIT); | 185 glClear(GL_COLOR_BUFFER_BIT); |
| 186 | 186 |
| 187 glApplyScreenSpaceAntialiasingCHROMIUM(); | 187 glApplyScreenSpaceAntialiasingCHROMIUM(); |
| 188 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 188 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 189 | 189 |
| 190 uint8_t pixels[1 * 4] = {0u, 255u, 0u, 255u}; | 190 uint8_t pixels[1 * 4] = {0u, 255u, 0u, 255u}; |
| 191 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels); | 191 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels, nullptr); |
| 192 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 192 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 193 } | 193 } |
| 194 } | 194 } |
| 195 | 195 |
| 196 // Similar to webgl conformance test 'testAntialias(true)' in | 196 // Similar to webgl conformance test 'testAntialias(true)' in |
| 197 // context-attributes-alpha-depth-stencil-antialias.html | 197 // context-attributes-alpha-depth-stencil-antialias.html |
| 198 TEST_F(GLApplyScreenSpaceAntialiasingCHROMIUMTest, AntiAliasing) { | 198 TEST_F(GLApplyScreenSpaceAntialiasingCHROMIUMTest, AntiAliasing) { |
| 199 if (!available_) | 199 if (!available_) |
| 200 return; | 200 return; |
| 201 | 201 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 212 255u, 0u, 0u, 255u, 255u, 0u, 0u, 255u, 0u, 0u, 0u, 0u, | 212 255u, 0u, 0u, 255u, 255u, 0u, 0u, 255u, 0u, 0u, 0u, 0u, |
| 213 255u, 0u, 0u, 255u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, | 213 255u, 0u, 0u, 255u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, |
| 214 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, | 214 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, |
| 215 }; | 215 }; |
| 216 glBindTexture(GL_TEXTURE_2D, textures_); | 216 glBindTexture(GL_TEXTURE_2D, textures_); |
| 217 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, length, length, 0, GL_RGBA, | 217 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, length, length, 0, GL_RGBA, |
| 218 GL_UNSIGNED_BYTE, rgba_pixels); | 218 GL_UNSIGNED_BYTE, rgba_pixels); |
| 219 | 219 |
| 220 uint8_t transparent[4] = {0u, 0u, 0u, 0u}; | 220 uint8_t transparent[4] = {0u, 0u, 0u, 0u}; |
| 221 uint8_t red[4] = {255u, 0u, 0u, 255u}; | 221 uint8_t red[4] = {255u, 0u, 0u, 255u}; |
| 222 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, red); | 222 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, red, nullptr); |
| 223 GLTestHelper::CheckPixels(0, 1, 1, 1, 0, red); | 223 GLTestHelper::CheckPixels(0, 1, 1, 1, 0, red, nullptr); |
| 224 GLTestHelper::CheckPixels(0, 2, 1, 1, 0, transparent); | 224 GLTestHelper::CheckPixels(0, 2, 1, 1, 0, transparent, nullptr); |
| 225 GLTestHelper::CheckPixels(1, 0, 1, 1, 0, red); | 225 GLTestHelper::CheckPixels(1, 0, 1, 1, 0, red, nullptr); |
| 226 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, transparent); | 226 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, transparent, nullptr); |
| 227 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 227 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 228 | 228 |
| 229 glApplyScreenSpaceAntialiasingCHROMIUM(); | 229 glApplyScreenSpaceAntialiasingCHROMIUM(); |
| 230 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 230 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 231 | 231 |
| 232 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, red); | 232 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, red, nullptr); |
| 233 GLTestHelper::CheckPixels(2, 2, 1, 1, 0, transparent); | 233 GLTestHelper::CheckPixels(2, 2, 1, 1, 0, transparent, nullptr); |
| 234 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 234 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 235 | 235 |
| 236 // Check if middle pixel is anti-aliased. | 236 // Check if middle pixel is anti-aliased. |
| 237 uint8_t pixels[4] = {0u}; | 237 uint8_t pixels[4] = {0u}; |
| 238 glReadPixels(1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixels); | 238 glReadPixels(1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixels); |
| 239 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 239 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 240 EXPECT_NE(transparent, pixels); | 240 EXPECT_NE(transparent, pixels); |
| 241 EXPECT_NE(red, pixels); | 241 EXPECT_NE(red, pixels); |
| 242 EXPECT_TRUE(pixels[0] > transparent[0] && pixels[0] < red[0]); | 242 EXPECT_TRUE(pixels[0] > transparent[0] && pixels[0] < red[0]); |
| 243 EXPECT_EQ(0u, pixels[1]); | 243 EXPECT_EQ(0u, pixels[1]); |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 387 | 387 |
| 388 // test using program before | 388 // test using program before |
| 389 uint8_t expected[] = { | 389 uint8_t expected[] = { |
| 390 0, 255, 0, 255, | 390 0, 255, 0, 255, |
| 391 }; | 391 }; |
| 392 uint8_t zero[] = { | 392 uint8_t zero[] = { |
| 393 0, 0, 0, 0, | 393 0, 0, 0, 0, |
| 394 }; | 394 }; |
| 395 glClearColor(0, 0, 0, 0); | 395 glClearColor(0, 0, 0, 0); |
| 396 glClear(GL_COLOR_BUFFER_BIT); | 396 glClear(GL_COLOR_BUFFER_BIT); |
| 397 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero)); | 397 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero, nullptr)); |
| 398 glDrawArrays(GL_TRIANGLES, 0, 6); | 398 glDrawArrays(GL_TRIANGLES, 0, 6); |
| 399 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); | 399 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected, nullptr)); |
| 400 | 400 |
| 401 // Call copyTextureCHROMIUM | 401 // Call copyTextureCHROMIUM |
| 402 uint8_t pixels[1 * 4] = {255u, 0u, 0u, 255u}; | 402 uint8_t pixels[1 * 4] = {255u, 0u, 0u, 255u}; |
| 403 glBindTexture(GL_TEXTURE_2D, textures_); | 403 glBindTexture(GL_TEXTURE_2D, textures_); |
| 404 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 404 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 405 pixels); | 405 pixels); |
| 406 glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_id_); | 406 glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_id_); |
| 407 glApplyScreenSpaceAntialiasingCHROMIUM(); | 407 glApplyScreenSpaceAntialiasingCHROMIUM(); |
| 408 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 408 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 409 | 409 |
| 410 // test using program after | 410 // test using program after |
| 411 glClear(GL_COLOR_BUFFER_BIT); | 411 glClear(GL_COLOR_BUFFER_BIT); |
| 412 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero)); | 412 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero, nullptr)); |
| 413 glDrawArrays(GL_TRIANGLES, 0, 6); | 413 glDrawArrays(GL_TRIANGLES, 0, 6); |
| 414 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); | 414 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected, nullptr)); |
| 415 | 415 |
| 416 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); | 416 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); |
| 417 | 417 |
| 418 gl2.MakeCurrent(); | 418 gl2.MakeCurrent(); |
| 419 gl2.Destroy(); | 419 gl2.Destroy(); |
| 420 gl_.MakeCurrent(); | 420 gl_.MakeCurrent(); |
| 421 } | 421 } |
| 422 | 422 |
| 423 } // namespace gpu | 423 } // namespace gpu |
| OLD | NEW |