| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 // This file defines tests that implementations of GLImage should pass in order | 5 // This file defines tests that implementations of GLImage should pass in order |
| 6 // to be conformant. | 6 // to be conformant. |
| 7 | 7 |
| 8 #ifndef UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_ | 8 #ifndef UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_ |
| 9 #define UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_ | 9 #define UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_ |
| 10 | 10 |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 } | 176 } |
| 177 | 177 |
| 178 protected: | 178 protected: |
| 179 scoped_refptr<GLSurface> surface_; | 179 scoped_refptr<GLSurface> surface_; |
| 180 scoped_refptr<GLContext> context_; | 180 scoped_refptr<GLContext> context_; |
| 181 GLImageTestDelegate delegate_; | 181 GLImageTestDelegate delegate_; |
| 182 }; | 182 }; |
| 183 | 183 |
| 184 TYPED_TEST_CASE_P(GLImageTest); | 184 TYPED_TEST_CASE_P(GLImageTest); |
| 185 | 185 |
| 186 TYPED_TEST_P(GLImageTest, CreateAndDestroy) { | 186 TYPED_TEST_P(GLImageTest, Create) { |
| 187 const gfx::Size small_image_size(4, 4); | 187 const gfx::Size small_image_size(4, 4); |
| 188 const gfx::Size large_image_size(512, 512); | 188 const gfx::Size large_image_size(512, 512); |
| 189 const uint8_t* image_color = this->delegate_.GetImageColor(); | 189 const uint8_t* image_color = this->delegate_.GetImageColor(); |
| 190 | 190 |
| 191 // Create a small solid color green image of preferred format. This must | 191 // Create a small solid color green image of preferred format. This must |
| 192 // succeed in order for a GLImage to be conformant. | 192 // succeed in order for a GLImage to be conformant. |
| 193 scoped_refptr<GLImage> small_image = | 193 scoped_refptr<GLImage> small_image = |
| 194 this->delegate_.CreateSolidColorImage(small_image_size, image_color); | 194 this->delegate_.CreateSolidColorImage(small_image_size, image_color); |
| 195 ASSERT_TRUE(small_image); | 195 ASSERT_TRUE(small_image); |
| 196 | 196 |
| 197 // Create a large solid color green image of preferred format. This must | 197 // Create a large solid color green image of preferred format. This must |
| 198 // succeed in order for a GLImage to be conformant. | 198 // succeed in order for a GLImage to be conformant. |
| 199 scoped_refptr<GLImage> large_image = | 199 scoped_refptr<GLImage> large_image = |
| 200 this->delegate_.CreateSolidColorImage(large_image_size, image_color); | 200 this->delegate_.CreateSolidColorImage(large_image_size, image_color); |
| 201 ASSERT_TRUE(large_image); | 201 ASSERT_TRUE(large_image); |
| 202 | 202 |
| 203 // Verify that image size is correct. | 203 // Verify that image size is correct. |
| 204 EXPECT_EQ(small_image->GetSize().ToString(), small_image_size.ToString()); | 204 EXPECT_EQ(small_image->GetSize().ToString(), small_image_size.ToString()); |
| 205 EXPECT_EQ(large_image->GetSize().ToString(), large_image_size.ToString()); | 205 EXPECT_EQ(large_image->GetSize().ToString(), large_image_size.ToString()); |
| 206 | |
| 207 // Verify that destruction of images work correctly both when we have a | |
| 208 // context and when we don't. | |
| 209 small_image->Destroy(true /* have_context */); | |
| 210 large_image->Destroy(false /* have_context */); | |
| 211 } | 206 } |
| 212 | 207 |
| 213 // The GLImageTest test case verifies the behaviour that is expected from a | 208 // The GLImageTest test case verifies the behaviour that is expected from a |
| 214 // GLImage in order to be conformant. | 209 // GLImage in order to be conformant. |
| 215 REGISTER_TYPED_TEST_CASE_P(GLImageTest, CreateAndDestroy); | 210 REGISTER_TYPED_TEST_CASE_P(GLImageTest, Create); |
| 216 | 211 |
| 217 template <typename GLImageTestDelegate> | 212 template <typename GLImageTestDelegate> |
| 218 class GLImageOddSizeTest : public GLImageTest<GLImageTestDelegate> {}; | 213 class GLImageOddSizeTest : public GLImageTest<GLImageTestDelegate> {}; |
| 219 | 214 |
| 220 // This test verifies that odd-sized GLImages can be created and destroyed. | 215 // This test verifies that odd-sized GLImages can be created and destroyed. |
| 221 TYPED_TEST_CASE_P(GLImageOddSizeTest); | 216 TYPED_TEST_CASE_P(GLImageOddSizeTest); |
| 222 | 217 |
| 223 TYPED_TEST_P(GLImageOddSizeTest, CreateAndDestroy) { | 218 TYPED_TEST_P(GLImageOddSizeTest, Create) { |
| 224 const gfx::Size odd_image_size(17, 53); | 219 const gfx::Size odd_image_size(17, 53); |
| 225 const uint8_t* image_color = this->delegate_.GetImageColor(); | 220 const uint8_t* image_color = this->delegate_.GetImageColor(); |
| 226 | 221 |
| 227 // Create an odd-sized solid color green image of preferred format. This must | 222 // Create an odd-sized solid color green image of preferred format. This must |
| 228 // succeed in order for a GLImage to be conformant. | 223 // succeed in order for a GLImage to be conformant. |
| 229 scoped_refptr<GLImage> odd_image = | 224 scoped_refptr<GLImage> odd_image = |
| 230 this->delegate_.CreateSolidColorImage(odd_image_size, image_color); | 225 this->delegate_.CreateSolidColorImage(odd_image_size, image_color); |
| 231 ASSERT_TRUE(odd_image); | 226 ASSERT_TRUE(odd_image); |
| 232 | 227 |
| 233 // Verify that image size is correct. | 228 // Verify that image size is correct. |
| 234 EXPECT_EQ(odd_image->GetSize().ToString(), odd_image_size.ToString()); | 229 EXPECT_EQ(odd_image->GetSize().ToString(), odd_image_size.ToString()); |
| 235 | |
| 236 odd_image->Destroy(true /* have_context */); | |
| 237 } | 230 } |
| 238 | 231 |
| 239 // The GLImageTest test case verifies the behaviour that is expected from a | 232 // The GLImageTest test case verifies the behaviour that is expected from a |
| 240 // GLImage in order to be conformant. | 233 // GLImage in order to be conformant. |
| 241 REGISTER_TYPED_TEST_CASE_P(GLImageOddSizeTest, CreateAndDestroy); | 234 REGISTER_TYPED_TEST_CASE_P(GLImageOddSizeTest, Create); |
| 242 | 235 |
| 243 template <typename GLImageTestDelegate> | 236 template <typename GLImageTestDelegate> |
| 244 class GLImageZeroInitializeTest : public GLImageTest<GLImageTestDelegate> {}; | 237 class GLImageZeroInitializeTest : public GLImageTest<GLImageTestDelegate> {}; |
| 245 | 238 |
| 246 // This test verifies that if an uninitialized image is bound to a texture, the | 239 // This test verifies that if an uninitialized image is bound to a texture, the |
| 247 // result is zero-initialized. | 240 // result is zero-initialized. |
| 248 TYPED_TEST_CASE_P(GLImageZeroInitializeTest); | 241 TYPED_TEST_CASE_P(GLImageZeroInitializeTest); |
| 249 | 242 |
| 250 TYPED_TEST_P(GLImageZeroInitializeTest, ZeroInitialize) { | 243 TYPED_TEST_P(GLImageZeroInitializeTest, ZeroInitialize) { |
| 251 #if defined(OS_MACOSX) | 244 #if defined(OS_MACOSX) |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 image->ReleaseTexImage(target); | 280 image->ReleaseTexImage(target); |
| 288 | 281 |
| 289 // Read back pixels to check expectations. | 282 // Read back pixels to check expectations. |
| 290 const uint8_t zero_color[] = {0, 0, 0, 0}; | 283 const uint8_t zero_color[] = {0, 0, 0, 0}; |
| 291 GLTestHelper::CheckPixels(0, 0, image_size.width(), image_size.height(), | 284 GLTestHelper::CheckPixels(0, 0, image_size.width(), image_size.height(), |
| 292 zero_color); | 285 zero_color); |
| 293 | 286 |
| 294 // Clean up. | 287 // Clean up. |
| 295 glDeleteTextures(1, &texture); | 288 glDeleteTextures(1, &texture); |
| 296 glDeleteFramebuffersEXT(1, &framebuffer); | 289 glDeleteFramebuffersEXT(1, &framebuffer); |
| 297 image->Destroy(true /* have_context */); | |
| 298 } | 290 } |
| 299 | 291 |
| 300 REGISTER_TYPED_TEST_CASE_P(GLImageZeroInitializeTest, ZeroInitialize); | 292 REGISTER_TYPED_TEST_CASE_P(GLImageZeroInitializeTest, ZeroInitialize); |
| 301 | 293 |
| 302 template <typename GLImageTestDelegate> | 294 template <typename GLImageTestDelegate> |
| 303 class GLImageBindTest : public GLImageTest<GLImageTestDelegate> {}; | 295 class GLImageBindTest : public GLImageTest<GLImageTestDelegate> {}; |
| 304 | 296 |
| 305 TYPED_TEST_CASE_P(GLImageBindTest); | 297 TYPED_TEST_CASE_P(GLImageBindTest); |
| 306 | 298 |
| 307 TYPED_TEST_P(GLImageBindTest, BindTexImage) { | 299 TYPED_TEST_P(GLImageBindTest, BindTexImage) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 334 // Draw |texture| to viewport. | 326 // Draw |texture| to viewport. |
| 335 DrawTextureQuad(target, image_size); | 327 DrawTextureQuad(target, image_size); |
| 336 | 328 |
| 337 // Read back pixels to check expectations. | 329 // Read back pixels to check expectations. |
| 338 GLTestHelper::CheckPixels(0, 0, image_size.width(), image_size.height(), | 330 GLTestHelper::CheckPixels(0, 0, image_size.width(), image_size.height(), |
| 339 image_color); | 331 image_color); |
| 340 | 332 |
| 341 // Clean up. | 333 // Clean up. |
| 342 glDeleteTextures(1, &texture); | 334 glDeleteTextures(1, &texture); |
| 343 glDeleteFramebuffersEXT(1, &framebuffer); | 335 glDeleteFramebuffersEXT(1, &framebuffer); |
| 344 image->Destroy(true /* have_context */); | |
| 345 } | 336 } |
| 346 | 337 |
| 347 REGISTER_TYPED_TEST_CASE_P(GLImageBindTest, BindTexImage); | 338 REGISTER_TYPED_TEST_CASE_P(GLImageBindTest, BindTexImage); |
| 348 | 339 |
| 349 template <typename GLImageTestDelegate> | 340 template <typename GLImageTestDelegate> |
| 350 class GLImageCopyTest : public GLImageTest<GLImageTestDelegate> {}; | 341 class GLImageCopyTest : public GLImageTest<GLImageTestDelegate> {}; |
| 351 | 342 |
| 352 TYPED_TEST_CASE_P(GLImageCopyTest); | 343 TYPED_TEST_CASE_P(GLImageCopyTest); |
| 353 | 344 |
| 354 TYPED_TEST_P(GLImageCopyTest, CopyTexImage) { | 345 TYPED_TEST_P(GLImageCopyTest, CopyTexImage) { |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 396 // Draw |texture| to viewport. | 387 // Draw |texture| to viewport. |
| 397 DrawTextureQuad(target, image_size); | 388 DrawTextureQuad(target, image_size); |
| 398 | 389 |
| 399 // Read back pixels to check expectations. | 390 // Read back pixels to check expectations. |
| 400 GLTestHelper::CheckPixels(0, 0, image_size.width(), image_size.height(), | 391 GLTestHelper::CheckPixels(0, 0, image_size.width(), image_size.height(), |
| 401 image_color); | 392 image_color); |
| 402 | 393 |
| 403 // Clean up. | 394 // Clean up. |
| 404 glDeleteTextures(1, &texture); | 395 glDeleteTextures(1, &texture); |
| 405 glDeleteFramebuffersEXT(1, &framebuffer); | 396 glDeleteFramebuffersEXT(1, &framebuffer); |
| 406 image->Destroy(true /* have_context */); | |
| 407 if (vao) { | 397 if (vao) { |
| 408 glDeleteVertexArraysOES(1, &vao); | 398 glDeleteVertexArraysOES(1, &vao); |
| 409 } | 399 } |
| 410 } | 400 } |
| 411 | 401 |
| 412 // The GLImageCopyTest test case verifies that the GLImage implementation | 402 // The GLImageCopyTest test case verifies that the GLImage implementation |
| 413 // handles CopyTexImage correctly. | 403 // handles CopyTexImage correctly. |
| 414 REGISTER_TYPED_TEST_CASE_P(GLImageCopyTest, CopyTexImage); | 404 REGISTER_TYPED_TEST_CASE_P(GLImageCopyTest, CopyTexImage); |
| 415 | 405 |
| 416 } // namespace gl | 406 } // namespace gl |
| 417 | 407 |
| 418 #endif // UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_ | 408 #endif // UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_ |
| OLD | NEW |