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 |