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> |
11 #include <GLES2/gl2extchromium.h> | 11 #include <GLES2/gl2extchromium.h> |
| 12 #include <stddef.h> |
| 13 #include <stdint.h> |
12 | 14 |
13 #include "gpu/command_buffer/tests/gl_manager.h" | 15 #include "gpu/command_buffer/tests/gl_manager.h" |
14 #include "gpu/command_buffer/tests/gl_test_utils.h" | 16 #include "gpu/command_buffer/tests/gl_test_utils.h" |
15 #include "testing/gmock/include/gmock/gmock.h" | 17 #include "testing/gmock/include/gmock/gmock.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
17 | 19 |
18 namespace gpu { | 20 namespace gpu { |
19 | 21 |
20 namespace { | 22 namespace { |
21 enum CopyType { TexImage, TexSubImage }; | 23 enum CopyType { TexImage, TexSubImage }; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 GLuint framebuffer_id_; | 62 GLuint framebuffer_id_; |
61 }; | 63 }; |
62 | 64 |
63 INSTANTIATE_TEST_CASE_P(CopyType, | 65 INSTANTIATE_TEST_CASE_P(CopyType, |
64 GLCopyTextureCHROMIUMTest, | 66 GLCopyTextureCHROMIUMTest, |
65 ::testing::ValuesIn(kCopyTypes)); | 67 ::testing::ValuesIn(kCopyTypes)); |
66 | 68 |
67 // Test to ensure that the basic functionality of the extension works. | 69 // Test to ensure that the basic functionality of the extension works. |
68 TEST_P(GLCopyTextureCHROMIUMTest, Basic) { | 70 TEST_P(GLCopyTextureCHROMIUMTest, Basic) { |
69 CopyType copy_type = GetParam(); | 71 CopyType copy_type = GetParam(); |
70 uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; | 72 uint8_t pixels[1 * 4] = {255u, 0u, 0u, 255u}; |
71 | 73 |
72 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 74 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
73 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 75 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
74 pixels); | 76 pixels); |
75 | 77 |
76 if (copy_type == TexImage) { | 78 if (copy_type == TexImage) { |
77 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA, | 79 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA, |
78 GL_UNSIGNED_BYTE, false, false, false); | 80 GL_UNSIGNED_BYTE, false, false, false); |
79 } else { | 81 } else { |
80 glBindTexture(GL_TEXTURE_2D, textures_[1]); | 82 glBindTexture(GL_TEXTURE_2D, textures_[1]); |
(...skipping 19 matching lines...) Expand all Loading... |
100 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 102 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
101 } | 103 } |
102 | 104 |
103 TEST_P(GLCopyTextureCHROMIUMTest, ImmutableTexture) { | 105 TEST_P(GLCopyTextureCHROMIUMTest, ImmutableTexture) { |
104 if (!GLTestHelper::HasExtension("GL_EXT_texture_storage")) { | 106 if (!GLTestHelper::HasExtension("GL_EXT_texture_storage")) { |
105 LOG(INFO) << "GL_EXT_texture_storage not supported. Skipping test..."; | 107 LOG(INFO) << "GL_EXT_texture_storage not supported. Skipping test..."; |
106 return; | 108 return; |
107 } | 109 } |
108 CopyType copy_type = GetParam(); | 110 CopyType copy_type = GetParam(); |
109 | 111 |
110 uint8 pixels[1 * 4] = {255u, 0u, 0u, 255u}; | 112 uint8_t pixels[1 * 4] = {255u, 0u, 0u, 255u}; |
111 | 113 |
112 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 114 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
113 glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_RGBA8_OES, 1, 1); | 115 glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_RGBA8_OES, 1, 1); |
114 glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 116 glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
115 pixels); | 117 pixels); |
116 | 118 |
117 glBindTexture(GL_TEXTURE_2D, textures_[1]); | 119 glBindTexture(GL_TEXTURE_2D, textures_[1]); |
118 glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_RGBA8_OES, 1, 1); | 120 glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_RGBA8_OES, 1, 1); |
119 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, | 121 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, |
120 textures_[1], 0); | 122 textures_[1], 0); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 0, 0, 1, 1, false, false, false); | 205 0, 0, 1, 1, false, false, false); |
204 } | 206 } |
205 EXPECT_TRUE(GL_INVALID_OPERATION == glGetError()) | 207 EXPECT_TRUE(GL_INVALID_OPERATION == glGetError()) |
206 << "dest_index:" << dest_index; | 208 << "dest_index:" << dest_index; |
207 } | 209 } |
208 } | 210 } |
209 | 211 |
210 // Test to ensure that the destination texture is redefined if the properties | 212 // Test to ensure that the destination texture is redefined if the properties |
211 // are different. | 213 // are different. |
212 TEST_F(GLCopyTextureCHROMIUMTest, RedefineDestinationTexture) { | 214 TEST_F(GLCopyTextureCHROMIUMTest, RedefineDestinationTexture) { |
213 uint8 pixels[4 * 4] = {255u, 0u, 0u, 255u, 255u, 0u, 0u, 255u, | 215 uint8_t pixels[4 * 4] = {255u, 0u, 0u, 255u, 255u, 0u, 0u, 255u, |
214 255u, 0u, 0u, 255u, 255u, 0u, 0u, 255u}; | 216 255u, 0u, 0u, 255u, 255u, 0u, 0u, 255u}; |
215 | 217 |
216 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 218 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
217 glTexImage2D( | 219 glTexImage2D( |
218 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); | 220 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); |
219 | 221 |
220 glBindTexture(GL_TEXTURE_2D, textures_[1]); | 222 glBindTexture(GL_TEXTURE_2D, textures_[1]); |
221 glTexImage2D(GL_TEXTURE_2D, | 223 glTexImage2D(GL_TEXTURE_2D, |
222 0, | 224 0, |
223 GL_BGRA_EXT, | 225 GL_BGRA_EXT, |
224 1, | 226 1, |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 else | 275 else |
274 glDisable(param); | 276 glDisable(param); |
275 } | 277 } |
276 | 278 |
277 } // unnamed namespace | 279 } // unnamed namespace |
278 | 280 |
279 // Validate that some basic GL state is not touched upon execution of | 281 // Validate that some basic GL state is not touched upon execution of |
280 // the extension. | 282 // the extension. |
281 TEST_P(GLCopyTextureCHROMIUMTest, BasicStatePreservation) { | 283 TEST_P(GLCopyTextureCHROMIUMTest, BasicStatePreservation) { |
282 CopyType copy_type = GetParam(); | 284 CopyType copy_type = GetParam(); |
283 uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; | 285 uint8_t pixels[1 * 4] = {255u, 0u, 0u, 255u}; |
284 | 286 |
285 glBindFramebuffer(GL_FRAMEBUFFER, 0); | 287 glBindFramebuffer(GL_FRAMEBUFFER, 0); |
286 | 288 |
287 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 289 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
288 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 290 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
289 pixels); | 291 pixels); |
290 | 292 |
291 if (copy_type == TexSubImage) { | 293 if (copy_type == TexSubImage) { |
292 glBindTexture(GL_TEXTURE_2D, textures_[1]); | 294 glBindTexture(GL_TEXTURE_2D, textures_[1]); |
293 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 295 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 } | 341 } |
340 | 342 |
341 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 343 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
342 }; | 344 }; |
343 | 345 |
344 // Verify that invocation of the extension does not modify the bound | 346 // Verify that invocation of the extension does not modify the bound |
345 // texture state. | 347 // texture state. |
346 TEST_P(GLCopyTextureCHROMIUMTest, TextureStatePreserved) { | 348 TEST_P(GLCopyTextureCHROMIUMTest, TextureStatePreserved) { |
347 CopyType copy_type = GetParam(); | 349 CopyType copy_type = GetParam(); |
348 // Setup the texture used for the extension invocation. | 350 // Setup the texture used for the extension invocation. |
349 uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; | 351 uint8_t pixels[1 * 4] = {255u, 0u, 0u, 255u}; |
350 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 352 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
351 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 353 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
352 pixels); | 354 pixels); |
353 | 355 |
354 if (copy_type == TexSubImage) { | 356 if (copy_type == TexSubImage) { |
355 glBindTexture(GL_TEXTURE_2D, textures_[1]); | 357 glBindTexture(GL_TEXTURE_2D, textures_[1]); |
356 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 358 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
357 nullptr); | 359 nullptr); |
358 } | 360 } |
359 | 361 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 glDeleteTextures(2, texture_ids); | 395 glDeleteTextures(2, texture_ids); |
394 | 396 |
395 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 397 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
396 } | 398 } |
397 | 399 |
398 // Verify that invocation of the extension does not perturb the currently | 400 // Verify that invocation of the extension does not perturb the currently |
399 // bound FBO state. | 401 // bound FBO state. |
400 TEST_P(GLCopyTextureCHROMIUMTest, FBOStatePreserved) { | 402 TEST_P(GLCopyTextureCHROMIUMTest, FBOStatePreserved) { |
401 CopyType copy_type = GetParam(); | 403 CopyType copy_type = GetParam(); |
402 // Setup the texture used for the extension invocation. | 404 // Setup the texture used for the extension invocation. |
403 uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; | 405 uint8_t pixels[1 * 4] = {255u, 0u, 0u, 255u}; |
404 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 406 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
405 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 407 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
406 pixels); | 408 pixels); |
407 | 409 |
408 if (copy_type == TexSubImage) { | 410 if (copy_type == TexSubImage) { |
409 glBindTexture(GL_TEXTURE_2D, textures_[1]); | 411 glBindTexture(GL_TEXTURE_2D, textures_[1]); |
410 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 412 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
411 nullptr); | 413 nullptr); |
412 } | 414 } |
413 | 415 |
(...skipping 12 matching lines...) Expand all Loading... |
426 glGenFramebuffers(1, &framebuffer_id); | 428 glGenFramebuffers(1, &framebuffer_id); |
427 glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_id); | 429 glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_id); |
428 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, | 430 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, |
429 texture_id, 0); | 431 texture_id, 0); |
430 glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, | 432 glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, |
431 GL_RENDERBUFFER, renderbuffer_id); | 433 GL_RENDERBUFFER, renderbuffer_id); |
432 EXPECT_TRUE( | 434 EXPECT_TRUE( |
433 GL_FRAMEBUFFER_COMPLETE == glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 435 GL_FRAMEBUFFER_COMPLETE == glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
434 | 436 |
435 // Test that we can write to the bound framebuffer | 437 // Test that we can write to the bound framebuffer |
436 uint8 expected_color[4] = { 255u, 255u, 0, 255u }; | 438 uint8_t expected_color[4] = {255u, 255u, 0, 255u}; |
437 glClearColor(1.0, 1.0, 0, 1.0); | 439 glClearColor(1.0, 1.0, 0, 1.0); |
438 glClear(GL_COLOR_BUFFER_BIT); | 440 glClear(GL_COLOR_BUFFER_BIT); |
439 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color); | 441 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color); |
440 | 442 |
441 if (copy_type == TexImage) { | 443 if (copy_type == TexImage) { |
442 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA, | 444 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA, |
443 GL_UNSIGNED_BYTE, false, false, false); | 445 GL_UNSIGNED_BYTE, false, false, false); |
444 } else { | 446 } else { |
445 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, | 447 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
446 0, 1, 1, false, false, false); | 448 0, 1, 1, false, false, false); |
447 } | 449 } |
448 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 450 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
449 | 451 |
450 EXPECT_TRUE(glIsFramebuffer(framebuffer_id)); | 452 EXPECT_TRUE(glIsFramebuffer(framebuffer_id)); |
451 | 453 |
452 // Ensure that reading from the framebuffer produces correct pixels. | 454 // Ensure that reading from the framebuffer produces correct pixels. |
453 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color); | 455 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color); |
454 | 456 |
455 uint8 expected_color2[4] = { 255u, 0, 255u, 255u }; | 457 uint8_t expected_color2[4] = {255u, 0, 255u, 255u}; |
456 glClearColor(1.0, 0, 1.0, 1.0); | 458 glClearColor(1.0, 0, 1.0, 1.0); |
457 glClear(GL_COLOR_BUFFER_BIT); | 459 glClear(GL_COLOR_BUFFER_BIT); |
458 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color2); | 460 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color2); |
459 | 461 |
460 GLint bound_fbo = 0; | 462 GLint bound_fbo = 0; |
461 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &bound_fbo); | 463 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &bound_fbo); |
462 EXPECT_EQ(framebuffer_id, static_cast<GLuint>(bound_fbo)); | 464 EXPECT_EQ(framebuffer_id, static_cast<GLuint>(bound_fbo)); |
463 | 465 |
464 GLint fbo_params = 0; | 466 GLint fbo_params = 0; |
465 glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, | 467 glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 glDeleteProgram(program); | 530 glDeleteProgram(program); |
529 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 531 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
530 glFlush(); | 532 glFlush(); |
531 | 533 |
532 // Program should still be usable on this context. | 534 // Program should still be usable on this context. |
533 gl_.MakeCurrent(); | 535 gl_.MakeCurrent(); |
534 | 536 |
535 GLTestHelper::SetupUnitQuad(position_loc); | 537 GLTestHelper::SetupUnitQuad(position_loc); |
536 | 538 |
537 // test using program before | 539 // test using program before |
538 uint8 expected[] = { 0, 255, 0, 255, }; | 540 uint8_t expected[] = { |
539 uint8 zero[] = { 0, 0, 0, 0, }; | 541 0, 255, 0, 255, |
| 542 }; |
| 543 uint8_t zero[] = { |
| 544 0, 0, 0, 0, |
| 545 }; |
540 glClear(GL_COLOR_BUFFER_BIT); | 546 glClear(GL_COLOR_BUFFER_BIT); |
541 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero)); | 547 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero)); |
542 glDrawArrays(GL_TRIANGLES, 0, 6); | 548 glDrawArrays(GL_TRIANGLES, 0, 6); |
543 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); | 549 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); |
544 | 550 |
545 // Call copyTextureCHROMIUM | 551 // Call copyTextureCHROMIUM |
546 uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; | 552 uint8_t pixels[1 * 4] = {255u, 0u, 0u, 255u}; |
547 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 553 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
548 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 554 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
549 pixels); | 555 pixels); |
550 if (copy_type == TexImage) { | 556 if (copy_type == TexImage) { |
551 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA, | 557 glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA, |
552 GL_UNSIGNED_BYTE, false, false, false); | 558 GL_UNSIGNED_BYTE, false, false, false); |
553 } else { | 559 } else { |
554 glBindTexture(GL_TEXTURE_2D, textures_[1]); | 560 glBindTexture(GL_TEXTURE_2D, textures_[1]); |
555 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 561 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
556 nullptr); | 562 nullptr); |
(...skipping 27 matching lines...) Expand all Loading... |
584 GL_UNSIGNED_BYTE, false, false, false); | 590 GL_UNSIGNED_BYTE, false, false, false); |
585 } else { | 591 } else { |
586 glBindTexture(GL_TEXTURE_2D, textures_[1]); | 592 glBindTexture(GL_TEXTURE_2D, textures_[1]); |
587 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, | 593 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, |
588 GL_UNSIGNED_BYTE, nullptr); | 594 GL_UNSIGNED_BYTE, nullptr); |
589 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, | 595 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
590 0, kWidth, kHeight, false, false, false); | 596 0, kWidth, kHeight, false, false, false); |
591 } | 597 } |
592 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 598 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
593 | 599 |
594 uint8 pixels[kHeight][kWidth][4] = {{{1}}}; | 600 uint8_t pixels[kHeight][kWidth][4] = {{{1}}}; |
595 glReadPixels(0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, pixels); | 601 glReadPixels(0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, pixels); |
596 for (int x = 0; x < kWidth; ++x) { | 602 for (int x = 0; x < kWidth; ++x) { |
597 for (int y = 0; y < kHeight; ++y) { | 603 for (int y = 0; y < kHeight; ++y) { |
598 EXPECT_EQ(0, pixels[y][x][0]); | 604 EXPECT_EQ(0, pixels[y][x][0]); |
599 EXPECT_EQ(0, pixels[y][x][1]); | 605 EXPECT_EQ(0, pixels[y][x][1]); |
600 EXPECT_EQ(0, pixels[y][x][2]); | 606 EXPECT_EQ(0, pixels[y][x][2]); |
601 EXPECT_EQ(0, pixels[y][x][3]); | 607 EXPECT_EQ(0, pixels[y][x][3]); |
602 } | 608 } |
603 } | 609 } |
604 | 610 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
685 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, 99995, 99996, 1, 1, 0, 0, 1, 1, false, | 691 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, 99995, 99996, 1, 1, 0, 0, 1, 1, false, |
686 false, false); | 692 false, false); |
687 EXPECT_TRUE(GL_INVALID_VALUE == glGetError()); | 693 EXPECT_TRUE(GL_INVALID_VALUE == glGetError()); |
688 | 694 |
689 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 1, 0, | 695 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 1, 0, |
690 0, 1, 1, false, false, false); | 696 0, 1, 1, false, false, false); |
691 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 697 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
692 } | 698 } |
693 | 699 |
694 TEST_F(GLCopyTextureCHROMIUMTest, CopySubTextureOffset) { | 700 TEST_F(GLCopyTextureCHROMIUMTest, CopySubTextureOffset) { |
695 uint8 rgba_pixels[4 * 4] = {255u, | 701 uint8_t rgba_pixels[4 * 4] = {255u, 0u, 0u, 255u, 0u, 255u, 0u, 255u, |
696 0u, | 702 0u, 0u, 255u, 255u, 0u, 0u, 0u, 255u}; |
697 0u, | |
698 255u, | |
699 0u, | |
700 255u, | |
701 0u, | |
702 255u, | |
703 0u, | |
704 0u, | |
705 255u, | |
706 255u, | |
707 0u, | |
708 0u, | |
709 0u, | |
710 255u}; | |
711 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 703 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
712 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 704 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
713 rgba_pixels); | 705 rgba_pixels); |
714 | 706 |
715 uint8 transparent_pixels[4 * 4] = { | 707 uint8_t transparent_pixels[4 * 4] = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, |
716 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u}; | 708 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u}; |
717 glBindTexture(GL_TEXTURE_2D, textures_[1]); | 709 glBindTexture(GL_TEXTURE_2D, textures_[1]); |
718 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 710 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
719 transparent_pixels); | 711 transparent_pixels); |
720 | 712 |
721 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 1, 0, | 713 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 1, 0, |
722 0, 1, 1, false, false, false); | 714 0, 1, 1, false, false, false); |
723 EXPECT_TRUE(glGetError() == GL_NO_ERROR); | 715 EXPECT_TRUE(glGetError() == GL_NO_ERROR); |
724 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 0, 1, | 716 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 0, 1, |
725 0, 1, 1, false, false, false); | 717 0, 1, 1, false, false, false); |
726 EXPECT_TRUE(glGetError() == GL_NO_ERROR); | 718 EXPECT_TRUE(glGetError() == GL_NO_ERROR); |
727 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 1, 0, | 719 glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 1, 0, |
728 1, 1, 1, false, false, false); | 720 1, 1, 1, false, false, false); |
729 EXPECT_TRUE(glGetError() == GL_NO_ERROR); | 721 EXPECT_TRUE(glGetError() == GL_NO_ERROR); |
730 | 722 |
731 // Check the FB is still bound. | 723 // Check the FB is still bound. |
732 GLint value = 0; | 724 GLint value = 0; |
733 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); | 725 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); |
734 GLuint fb_id = value; | 726 GLuint fb_id = value; |
735 EXPECT_EQ(framebuffer_id_, fb_id); | 727 EXPECT_EQ(framebuffer_id_, fb_id); |
736 | 728 |
737 // Check that FB is complete. | 729 // Check that FB is complete. |
738 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), | 730 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), |
739 glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 731 glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
740 | 732 |
741 uint8 transparent[1 * 4] = {0u, 0u, 0u, 0u}; | 733 uint8_t transparent[1 * 4] = {0u, 0u, 0u, 0u}; |
742 uint8 red[1 * 4] = {255u, 0u, 0u, 255u}; | 734 uint8_t red[1 * 4] = {255u, 0u, 0u, 255u}; |
743 uint8 green[1 * 4] = {0u, 255u, 0u, 255u}; | 735 uint8_t green[1 * 4] = {0u, 255u, 0u, 255u}; |
744 uint8 blue[1 * 4] = {0u, 0u, 255u, 255u}; | 736 uint8_t blue[1 * 4] = {0u, 0u, 255u, 255u}; |
745 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, transparent); | 737 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, transparent); |
746 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, red); | 738 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, red); |
747 GLTestHelper::CheckPixels(1, 0, 1, 1, 0, green); | 739 GLTestHelper::CheckPixels(1, 0, 1, 1, 0, green); |
748 GLTestHelper::CheckPixels(0, 1, 1, 1, 0, blue); | 740 GLTestHelper::CheckPixels(0, 1, 1, 1, 0, blue); |
749 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 741 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
750 } | 742 } |
751 | 743 |
752 } // namespace gpu | 744 } // namespace gpu |
OLD | NEW |