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 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 // Check the FB is still bound. | 329 // Check the FB is still bound. |
330 GLint value = 0; | 330 GLint value = 0; |
331 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); | 331 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); |
332 GLuint fb_id = value; | 332 GLuint fb_id = value; |
333 EXPECT_EQ(framebuffer_id_, fb_id); | 333 EXPECT_EQ(framebuffer_id_, fb_id); |
334 | 334 |
335 // Check that FB is complete. | 335 // Check that FB is complete. |
336 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), | 336 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), |
337 glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 337 glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
338 | 338 |
339 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels); | 339 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels, nullptr); |
340 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 340 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
341 } | 341 } |
342 | 342 |
343 TEST_P(GLCopyTextureCHROMIUMES3Test, FormatCombinations) { | 343 TEST_P(GLCopyTextureCHROMIUMES3Test, FormatCombinations) { |
344 if (ShouldSkipTest()) | 344 if (ShouldSkipTest()) |
345 return; | 345 return; |
346 CopyType copy_type = GetParam(); | 346 CopyType copy_type = GetParam(); |
347 | 347 |
348 struct FormatType { | 348 struct FormatType { |
349 GLenum internal_format; | 349 GLenum internal_format; |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 glBindTexture(GL_TEXTURE_2D, texture); | 480 glBindTexture(GL_TEXTURE_2D, texture); |
481 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); | 481 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); |
482 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | 482 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
483 CreateBackingForTexture(GL_TEXTURE_2D, kWidth, kHeight); | 483 CreateBackingForTexture(GL_TEXTURE_2D, kWidth, kHeight); |
484 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, | 484 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
485 GL_TEXTURE_2D, texture, 0); | 485 GL_TEXTURE_2D, texture, 0); |
486 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), | 486 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), |
487 glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 487 glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
488 glViewport(0, 0, kWidth, kHeight); | 488 glViewport(0, 0, kWidth, kHeight); |
489 | 489 |
| 490 glBindTexture(GL_TEXTURE_2D, textures_[1]); |
490 std::string fragment_shader_source = | 491 std::string fragment_shader_source = |
491 GetFragmentShaderSource(dest_format_type.internal_format); | 492 GetFragmentShaderSource(dest_format_type.internal_format); |
492 GLuint program = GLTestHelper::LoadProgram( | 493 GLTestHelper::DrawTextureQuad(kSimpleVertexShaderES3, |
493 kSimpleVertexShaderES3, fragment_shader_source.c_str()); | 494 fragment_shader_source.c_str(), |
494 EXPECT_NE(program, 0u); | 495 "a_position", "u_texture"); |
495 GLint position_loc = glGetAttribLocation(program, "a_position"); | |
496 GLint texture_loc = glGetUniformLocation(program, "u_texture"); | |
497 ASSERT_NE(position_loc, -1); | |
498 ASSERT_NE(texture_loc, -1); | |
499 glUseProgram(program); | |
500 | 496 |
501 GLuint vbo = GLTestHelper::SetupUnitQuad(position_loc); | 497 uint8_t tolerance = dest_format_type.internal_format == GL_RGBA4 ? 20 : 7; |
502 ASSERT_NE(vbo, 0u); | 498 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, kWidth, kHeight, tolerance, |
503 | 499 expected_color, mask)) |
504 glActiveTexture(GL_TEXTURE0); | 500 << " src_internal_format: " |
505 glBindTexture(GL_TEXTURE_2D, textures_[1]); | 501 << gles2::GLES2Util::GetStringEnum(src_format_type.internal_format) |
506 | 502 << " dest_internal_format: " |
507 glDrawArrays(GL_TRIANGLES, 0, 6); | 503 << gles2::GLES2Util::GetStringEnum(dest_format_type.internal_format); |
508 | |
509 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 504 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
510 | 505 |
511 GLsizei size = kWidth * kHeight * 4; | |
512 std::unique_ptr<uint8_t[]> result(new uint8_t[size]); | |
513 glReadPixels(0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, | |
514 result.get()); | |
515 uint8_t tolerance = dest_format_type.internal_format == GL_RGBA4 ? 20 : 7; | |
516 for (GLint yy = 0; yy < kHeight; ++yy) { | |
517 for (GLint xx = 0; xx < kWidth; ++xx) { | |
518 int offset = yy * kWidth * 4 + xx * 4; | |
519 for (int jj = 0; jj < 4; ++jj) { | |
520 uint8_t actual = result[offset + jj]; | |
521 uint8_t expected = expected_color[jj]; | |
522 int diff = actual - expected; | |
523 diff = diff < 0 ? -diff : diff; | |
524 if (mask[jj] && diff > tolerance) { | |
525 EXPECT_EQ(expected, actual) | |
526 << " at " << xx << ", " << yy << " channel " << jj | |
527 << " src_internal_format: " | |
528 << gles2::GLES2Util::GetStringEnum( | |
529 src_format_type.internal_format) | |
530 << " dest_internal_format: " | |
531 << gles2::GLES2Util::GetStringEnum( | |
532 dest_format_type.internal_format); | |
533 } | |
534 } | |
535 } | |
536 } | |
537 | |
538 glDeleteTextures(1, &texture); | 506 glDeleteTextures(1, &texture); |
539 glDeleteFramebuffers(1, &framebuffer); | 507 glDeleteFramebuffers(1, &framebuffer); |
540 glDeleteTextures(2, textures_); | 508 glDeleteTextures(2, textures_); |
541 glDeleteFramebuffers(1, &framebuffer_id_); | 509 glDeleteFramebuffers(1, &framebuffer_id_); |
542 } | 510 } |
543 } | 511 } |
544 } | 512 } |
545 | 513 |
546 TEST_P(GLCopyTextureCHROMIUMTest, ImmutableTexture) { | 514 TEST_P(GLCopyTextureCHROMIUMTest, ImmutableTexture) { |
547 if (!GLTestHelper::HasExtension("GL_EXT_texture_storage")) { | 515 if (!GLTestHelper::HasExtension("GL_EXT_texture_storage")) { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
582 // Check the FB is still bound. | 550 // Check the FB is still bound. |
583 GLint value = 0; | 551 GLint value = 0; |
584 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); | 552 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); |
585 GLuint fb_id = value; | 553 GLuint fb_id = value; |
586 EXPECT_EQ(framebuffer_id_, fb_id); | 554 EXPECT_EQ(framebuffer_id_, fb_id); |
587 | 555 |
588 // Check that FB is complete. | 556 // Check that FB is complete. |
589 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), | 557 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), |
590 glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 558 glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
591 | 559 |
592 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels); | 560 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, pixels, nullptr); |
593 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 561 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
594 } | 562 } |
595 glDeleteTextures(2, textures_); | 563 glDeleteTextures(2, textures_); |
596 glDeleteFramebuffers(1, &framebuffer_id_); | 564 glDeleteFramebuffers(1, &framebuffer_id_); |
597 } | 565 } |
598 } | 566 } |
599 } | 567 } |
600 | 568 |
601 TEST_P(GLCopyTextureCHROMIUMTest, InternalFormat) { | 569 TEST_P(GLCopyTextureCHROMIUMTest, InternalFormat) { |
602 CopyType copy_type = GetParam(); | 570 CopyType copy_type = GetParam(); |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
740 // Check the FB is still bound. | 708 // Check the FB is still bound. |
741 GLint value = 0; | 709 GLint value = 0; |
742 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); | 710 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &value); |
743 GLuint fb_id = value; | 711 GLuint fb_id = value; |
744 EXPECT_EQ(framebuffer_id_, fb_id); | 712 EXPECT_EQ(framebuffer_id_, fb_id); |
745 | 713 |
746 // Check that FB is complete. | 714 // Check that FB is complete. |
747 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), | 715 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), |
748 glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 716 glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
749 | 717 |
750 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, &pixels[12]); | 718 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, &pixels[12], nullptr); |
751 | 719 |
752 glDeleteTextures(2, textures_); | 720 glDeleteTextures(2, textures_); |
753 glDeleteFramebuffers(1, &framebuffer_id_); | 721 glDeleteFramebuffers(1, &framebuffer_id_); |
754 | 722 |
755 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 723 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
756 } | 724 } |
757 | 725 |
758 namespace { | 726 namespace { |
759 | 727 |
760 void glEnableDisable(GLint param, GLboolean value) { | 728 void glEnableDisable(GLint param, GLboolean value) { |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
927 texture_id, 0); | 895 texture_id, 0); |
928 glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, | 896 glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, |
929 GL_RENDERBUFFER, renderbuffer_id); | 897 GL_RENDERBUFFER, renderbuffer_id); |
930 EXPECT_TRUE( | 898 EXPECT_TRUE( |
931 GL_FRAMEBUFFER_COMPLETE == glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 899 GL_FRAMEBUFFER_COMPLETE == glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
932 | 900 |
933 // Test that we can write to the bound framebuffer | 901 // Test that we can write to the bound framebuffer |
934 uint8_t expected_color[4] = {255u, 255u, 0, 255u}; | 902 uint8_t expected_color[4] = {255u, 255u, 0, 255u}; |
935 glClearColor(1.0, 1.0, 0, 1.0); | 903 glClearColor(1.0, 1.0, 0, 1.0); |
936 glClear(GL_COLOR_BUFFER_BIT); | 904 glClear(GL_COLOR_BUFFER_BIT); |
937 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color); | 905 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color, nullptr); |
938 | 906 |
939 if (copy_type == TexImage) { | 907 if (copy_type == TexImage) { |
940 glCopyTextureCHROMIUM(textures_[0], textures_[1], GL_RGBA, | 908 glCopyTextureCHROMIUM(textures_[0], textures_[1], GL_RGBA, |
941 GL_UNSIGNED_BYTE, false, false, false); | 909 GL_UNSIGNED_BYTE, false, false, false); |
942 } else { | 910 } else { |
943 glCopySubTextureCHROMIUM(textures_[0], textures_[1], 0, 0, 0, | 911 glCopySubTextureCHROMIUM(textures_[0], textures_[1], 0, 0, 0, |
944 0, 1, 1, false, false, false); | 912 0, 1, 1, false, false, false); |
945 } | 913 } |
946 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 914 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
947 | 915 |
948 EXPECT_TRUE(glIsFramebuffer(framebuffer_id)); | 916 EXPECT_TRUE(glIsFramebuffer(framebuffer_id)); |
949 | 917 |
950 // Ensure that reading from the framebuffer produces correct pixels. | 918 // Ensure that reading from the framebuffer produces correct pixels. |
951 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color); | 919 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color, nullptr); |
952 | 920 |
953 uint8_t expected_color2[4] = {255u, 0, 255u, 255u}; | 921 uint8_t expected_color2[4] = {255u, 0, 255u, 255u}; |
954 glClearColor(1.0, 0, 1.0, 1.0); | 922 glClearColor(1.0, 0, 1.0, 1.0); |
955 glClear(GL_COLOR_BUFFER_BIT); | 923 glClear(GL_COLOR_BUFFER_BIT); |
956 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color2); | 924 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected_color2, nullptr); |
957 | 925 |
958 GLint bound_fbo = 0; | 926 GLint bound_fbo = 0; |
959 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &bound_fbo); | 927 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &bound_fbo); |
960 EXPECT_EQ(framebuffer_id, static_cast<GLuint>(bound_fbo)); | 928 EXPECT_EQ(framebuffer_id, static_cast<GLuint>(bound_fbo)); |
961 | 929 |
962 GLint fbo_params = 0; | 930 GLint fbo_params = 0; |
963 glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, | 931 glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
964 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, | 932 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, |
965 &fbo_params); | 933 &fbo_params); |
966 EXPECT_EQ(GL_TEXTURE, fbo_params); | 934 EXPECT_EQ(GL_TEXTURE, fbo_params); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1035 GLTestHelper::SetupUnitQuad(position_loc); | 1003 GLTestHelper::SetupUnitQuad(position_loc); |
1036 | 1004 |
1037 // test using program before | 1005 // test using program before |
1038 uint8_t expected[] = { | 1006 uint8_t expected[] = { |
1039 0, 255, 0, 255, | 1007 0, 255, 0, 255, |
1040 }; | 1008 }; |
1041 uint8_t zero[] = { | 1009 uint8_t zero[] = { |
1042 0, 0, 0, 0, | 1010 0, 0, 0, 0, |
1043 }; | 1011 }; |
1044 glClear(GL_COLOR_BUFFER_BIT); | 1012 glClear(GL_COLOR_BUFFER_BIT); |
1045 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero)); | 1013 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero, nullptr)); |
1046 glDrawArrays(GL_TRIANGLES, 0, 6); | 1014 glDrawArrays(GL_TRIANGLES, 0, 6); |
1047 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); | 1015 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected, nullptr)); |
1048 | 1016 |
1049 // Call copyTextureCHROMIUM | 1017 // Call copyTextureCHROMIUM |
1050 uint8_t pixels[1 * 4] = {255u, 0u, 0u, 255u}; | 1018 uint8_t pixels[1 * 4] = {255u, 0u, 0u, 255u}; |
1051 glBindTexture(GL_TEXTURE_2D, textures_[0]); | 1019 glBindTexture(GL_TEXTURE_2D, textures_[0]); |
1052 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 1020 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
1053 pixels); | 1021 pixels); |
1054 if (copy_type == TexImage) { | 1022 if (copy_type == TexImage) { |
1055 glCopyTextureCHROMIUM(textures_[0], textures_[1], GL_RGBA, | 1023 glCopyTextureCHROMIUM(textures_[0], textures_[1], GL_RGBA, |
1056 GL_UNSIGNED_BYTE, false, false, false); | 1024 GL_UNSIGNED_BYTE, false, false, false); |
1057 } else { | 1025 } else { |
1058 glBindTexture(GL_TEXTURE_2D, textures_[1]); | 1026 glBindTexture(GL_TEXTURE_2D, textures_[1]); |
1059 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 1027 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
1060 nullptr); | 1028 nullptr); |
1061 glCopySubTextureCHROMIUM(textures_[0], textures_[1], 0, 0, 0, | 1029 glCopySubTextureCHROMIUM(textures_[0], textures_[1], 0, 0, 0, |
1062 0, 1, 1, false, false, false); | 1030 0, 1, 1, false, false, false); |
1063 } | 1031 } |
1064 | 1032 |
1065 // test using program after | 1033 // test using program after |
1066 glClear(GL_COLOR_BUFFER_BIT); | 1034 glClear(GL_COLOR_BUFFER_BIT); |
1067 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero)); | 1035 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, zero, nullptr)); |
1068 glDrawArrays(GL_TRIANGLES, 0, 6); | 1036 glDrawArrays(GL_TRIANGLES, 0, 6); |
1069 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected)); | 1037 EXPECT_TRUE(GLTestHelper::CheckPixels(0, 0, 1, 1, 0, expected, nullptr)); |
1070 | 1038 |
1071 glDeleteTextures(2, textures_); | 1039 glDeleteTextures(2, textures_); |
1072 glDeleteFramebuffers(1, &framebuffer_id_); | 1040 glDeleteFramebuffers(1, &framebuffer_id_); |
1073 | 1041 |
1074 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 1042 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
1075 | 1043 |
1076 gl2.MakeCurrent(); | 1044 gl2.MakeCurrent(); |
1077 gl2.Destroy(); | 1045 gl2.Destroy(); |
1078 gl_.MakeCurrent(); | 1046 gl_.MakeCurrent(); |
1079 } | 1047 } |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1245 EXPECT_EQ(framebuffer_id_, fb_id); | 1213 EXPECT_EQ(framebuffer_id_, fb_id); |
1246 | 1214 |
1247 // Check that FB is complete. | 1215 // Check that FB is complete. |
1248 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), | 1216 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), |
1249 glCheckFramebufferStatus(GL_FRAMEBUFFER)); | 1217 glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
1250 | 1218 |
1251 uint8_t transparent[1 * 4] = {0u, 0u, 0u, 0u}; | 1219 uint8_t transparent[1 * 4] = {0u, 0u, 0u, 0u}; |
1252 uint8_t red[1 * 4] = {255u, 0u, 0u, 255u}; | 1220 uint8_t red[1 * 4] = {255u, 0u, 0u, 255u}; |
1253 uint8_t green[1 * 4] = {0u, 255u, 0u, 255u}; | 1221 uint8_t green[1 * 4] = {0u, 255u, 0u, 255u}; |
1254 uint8_t blue[1 * 4] = {0u, 0u, 255u, 255u}; | 1222 uint8_t blue[1 * 4] = {0u, 0u, 255u, 255u}; |
1255 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, transparent); | 1223 GLTestHelper::CheckPixels(0, 0, 1, 1, 0, transparent, nullptr); |
1256 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, red); | 1224 GLTestHelper::CheckPixels(1, 1, 1, 1, 0, red, nullptr); |
1257 GLTestHelper::CheckPixels(1, 0, 1, 1, 0, green); | 1225 GLTestHelper::CheckPixels(1, 0, 1, 1, 0, green, nullptr); |
1258 GLTestHelper::CheckPixels(0, 1, 1, 1, 0, blue); | 1226 GLTestHelper::CheckPixels(0, 1, 1, 1, 0, blue, nullptr); |
1259 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 1227 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
1260 | 1228 |
1261 glDeleteTextures(2, textures_); | 1229 glDeleteTextures(2, textures_); |
1262 glDeleteFramebuffers(1, &framebuffer_id_); | 1230 glDeleteFramebuffers(1, &framebuffer_id_); |
1263 } | 1231 } |
1264 | 1232 |
1265 TEST_F(GLCopyTextureCHROMIUMTest, CopyTextureBetweenTexture2DAndRectangleArb) { | 1233 TEST_F(GLCopyTextureCHROMIUMTest, CopyTextureBetweenTexture2DAndRectangleArb) { |
1266 if (!GLTestHelper::HasExtension("GL_ARB_texture_rectangle")) { | 1234 if (!GLTestHelper::HasExtension("GL_ARB_texture_rectangle")) { |
1267 LOG(INFO) << | 1235 LOG(INFO) << |
1268 "GL_ARB_texture_rectangle not supported. Skipping test..."; | 1236 "GL_ARB_texture_rectangle not supported. Skipping test..."; |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1327 glClear(GL_COLOR_BUFFER_BIT); | 1295 glClear(GL_COLOR_BUFFER_BIT); |
1328 glCopySubTextureCHROMIUM(textures_[0], textures_[1], copy_region_x, | 1296 glCopySubTextureCHROMIUM(textures_[0], textures_[1], copy_region_x, |
1329 copy_region_y, 13, 6, copy_region_width, | 1297 copy_region_y, 13, 6, copy_region_width, |
1330 copy_region_height, false, false, false); | 1298 copy_region_height, false, false, false); |
1331 EXPECT_TRUE(GL_NO_ERROR == glGetError()); | 1299 EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
1332 | 1300 |
1333 for (GLint x = 0; x < dest_width; ++x) { | 1301 for (GLint x = 0; x < dest_width; ++x) { |
1334 for (GLint y = 0; y < dest_height; ++y) { | 1302 for (GLint y = 0; y < dest_height; ++y) { |
1335 if (x < copy_region_x || x >= copy_region_x + copy_region_width || | 1303 if (x < copy_region_x || x >= copy_region_x + copy_region_width || |
1336 y < copy_region_y || y >= copy_region_y + copy_region_height) { | 1304 y < copy_region_y || y >= copy_region_y + copy_region_height) { |
1337 GLTestHelper::CheckPixels(x, y, 1, 1, 0, grey); | 1305 GLTestHelper::CheckPixels(x, y, 1, 1, 0, grey, nullptr); |
1338 continue; | 1306 continue; |
1339 } | 1307 } |
1340 | 1308 |
1341 uint8_t* expected_color; | 1309 uint8_t* expected_color; |
1342 if (x < copy_region_x + 2) { | 1310 if (x < copy_region_x + 2) { |
1343 expected_color = y < copy_region_y + 1 ? red : green; | 1311 expected_color = y < copy_region_y + 1 ? red : green; |
1344 } else { | 1312 } else { |
1345 expected_color = y < copy_region_y + 1 ? blue : white; | 1313 expected_color = y < copy_region_y + 1 ? blue : white; |
1346 } | 1314 } |
1347 GLTestHelper::CheckPixels(x, y, 1, 1, 0, expected_color); | 1315 GLTestHelper::CheckPixels(x, y, 1, 1, 0, expected_color, nullptr); |
1348 } | 1316 } |
1349 } | 1317 } |
1350 | 1318 |
1351 glDeleteTextures(2, textures_); | 1319 glDeleteTextures(2, textures_); |
1352 glDeleteFramebuffers(1, &framebuffer_id_); | 1320 glDeleteFramebuffers(1, &framebuffer_id_); |
1353 } | 1321 } |
1354 } | 1322 } |
1355 } | 1323 } |
1356 | 1324 |
1357 } // namespace gpu | 1325 } // namespace gpu |
OLD | NEW |