Index: gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc |
diff --git a/gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc b/gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc |
index ff15241233dd3e030c5f1491cc940d2124efda3b..160e85f236a8ab0e6f8fbb09fedd56769397a74e 100644 |
--- a/gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc |
+++ b/gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc |
@@ -81,7 +81,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, Basic) { |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
nullptr); |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
+ 0, 1, 1); |
} |
EXPECT_TRUE(glGetError() == GL_NO_ERROR); |
@@ -124,7 +125,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, ImmutableTexture) { |
GL_UNSIGNED_BYTE); |
EXPECT_TRUE(glGetError() == GL_INVALID_OPERATION); |
} else { |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
+ 0, 1, 1); |
EXPECT_TRUE(glGetError() == GL_NO_ERROR); |
// Check the FB is still bound. |
@@ -166,7 +168,7 @@ TEST_P(GLCopyTextureCHROMIUMTest, InternalFormat) { |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, |
- 0); |
+ 0, 0, 0, 1, 1); |
} |
EXPECT_TRUE(GL_NO_ERROR == glGetError()) << "src_index:" << src_index |
@@ -196,7 +198,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, InternalFormatNotSupported) { |
glTexImage2D(GL_TEXTURE_2D, 0, unsupported_dest_formats[dest_index], 1, 1, |
0, unsupported_dest_formats[dest_index], GL_UNSIGNED_BYTE, |
nullptr); |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, |
+ 0, 0, 1, 1); |
} |
EXPECT_TRUE(GL_INVALID_OPERATION == glGetError()) |
<< "dest_index:" << dest_index; |
@@ -287,7 +290,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, FlipY) { |
glBindTexture(GL_TEXTURE_2D, textures_[1]); |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
nullptr); |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
+ 0, 2, 2); |
} |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
@@ -323,7 +327,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, PremultiplyAlpha) { |
glBindTexture(GL_TEXTURE_2D, textures_[1]); |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
nullptr); |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
+ 0, 1, 1); |
} |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
@@ -355,7 +360,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, UnpremultiplyAlpha) { |
glBindTexture(GL_TEXTURE_2D, textures_[1]); |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
nullptr); |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
+ 0, 1, 1); |
} |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
@@ -395,7 +401,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, FlipYAndPremultiplyAlpha) { |
glBindTexture(GL_TEXTURE_2D, textures_[1]); |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
nullptr); |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
+ 0, 2, 2); |
} |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
@@ -439,7 +446,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, FlipYAndUnpremultiplyAlpha) { |
glBindTexture(GL_TEXTURE_2D, textures_[1]); |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
nullptr); |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
+ 0, 2, 2); |
} |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
@@ -503,7 +511,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, BasicStatePreservation) { |
glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA, |
GL_UNSIGNED_BYTE); |
} else { |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, |
+ 0, 0, 1, 1); |
} |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
@@ -561,7 +570,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, TextureStatePreserved) { |
glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA, |
GL_UNSIGNED_BYTE); |
} else { |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
+ 0, 1, 1); |
} |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
@@ -632,7 +642,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, FBOStatePreserved) { |
glCopyTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], GL_RGBA, |
GL_UNSIGNED_BYTE); |
} else { |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
+ 0, 1, 1); |
} |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
@@ -743,7 +754,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, ProgramStatePreservation) { |
glBindTexture(GL_TEXTURE_2D, textures_[1]); |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
nullptr); |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
+ 0, 1, 1); |
} |
// test using program after |
@@ -774,7 +786,8 @@ TEST_P(GLCopyTextureCHROMIUMTest, UninitializedSource) { |
glBindTexture(GL_TEXTURE_2D, textures_[1]); |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, |
GL_UNSIGNED_BYTE, nullptr); |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 0, |
+ 0, kWidth, kHeight); |
} |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
@@ -801,31 +814,66 @@ TEST_F(GLCopyTextureCHROMIUMTest, CopySubTextureDimension) { |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 3, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
nullptr); |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 1); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 1, 0, |
+ 0, 1, 1); |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
// xoffset < 0 |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], -1, 1); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], -1, 1, 0, |
+ 0, 1, 1); |
EXPECT_TRUE(glGetError() == GL_INVALID_VALUE); |
- // xoffset + source_width > dest_width |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 2, 2); |
+ // x < 0 |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 1, -1, |
+ 0, 1, 1); |
+ EXPECT_TRUE(glGetError() == GL_INVALID_VALUE); |
+ |
+ // xoffset + width > dest_width |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 2, 2, 0, |
+ 0, 2, 2); |
+ EXPECT_TRUE(glGetError() == GL_INVALID_VALUE); |
+ |
+ // x + width > source_width |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 0, 1, |
+ 1, 2, 2); |
EXPECT_TRUE(glGetError() == GL_INVALID_VALUE); |
} |
TEST_F(GLCopyTextureCHROMIUMTest, CopySubTextureOffset) { |
- uint8 red[1 * 4] = {255u, 0u, 0u, 255u}; |
+ uint8 rgba_pixels[4 * 4] = {255u, |
+ 0u, |
+ 0u, |
+ 255u, |
+ 0u, |
+ 255u, |
+ 0u, |
+ 255u, |
+ 0u, |
+ 0u, |
+ 255u, |
+ 255u, |
+ 0u, |
+ 0u, |
+ 0u, |
+ 255u}; |
glBindTexture(GL_TEXTURE_2D, textures_[0]); |
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
- red); |
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
+ rgba_pixels); |
- uint8 transparent_pixel[4 * 4] = { |
+ uint8 transparent_pixels[4 * 4] = { |
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u}; |
glBindTexture(GL_TEXTURE_2D, textures_[1]); |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
- transparent_pixel); |
+ transparent_pixels); |
- glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 1); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 1, 0, |
+ 0, 1, 1); |
+ EXPECT_TRUE(glGetError() == GL_NO_ERROR); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 1, 0, 1, |
+ 0, 1, 1); |
+ EXPECT_TRUE(glGetError() == GL_NO_ERROR); |
+ glCopySubTextureCHROMIUM(GL_TEXTURE_2D, textures_[0], textures_[1], 0, 1, 0, |
+ 1, 1, 1); |
EXPECT_TRUE(glGetError() == GL_NO_ERROR); |
// Check the FB is still bound. |
@@ -839,8 +887,13 @@ TEST_F(GLCopyTextureCHROMIUMTest, CopySubTextureOffset) { |
glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
uint8 transparent[1 * 4] = {0u, 0u, 0u, 0u}; |
+ uint8 red[1 * 4] = {255u, 0u, 0u, 255u}; |
+ uint8 green[1 * 4] = {0u, 255u, 0u, 255u}; |
+ uint8 blue[1 * 4] = {0u, 0u, 255u, 255u}; |
GLTestHelper::CheckPixels(0, 0, 1, 1, 0, transparent); |
GLTestHelper::CheckPixels(1, 1, 1, 1, 0, red); |
+ GLTestHelper::CheckPixels(1, 0, 1, 1, 0, green); |
+ GLTestHelper::CheckPixels(0, 1, 1, 1, 0, blue); |
EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
} |