Chromium Code Reviews| Index: gpu/command_buffer/tests/gl_texture_mailbox_unittest.cc |
| diff --git a/gpu/command_buffer/tests/gl_texture_mailbox_unittest.cc b/gpu/command_buffer/tests/gl_texture_mailbox_unittest.cc |
| index ba3324d718cfb1a5c08f2ea6ba35f4fcbb1fc83b..814819edea2c5af644ea23f682d2f724a1ea9c46 100644 |
| --- a/gpu/command_buffer/tests/gl_texture_mailbox_unittest.cc |
| +++ b/gpu/command_buffer/tests/gl_texture_mailbox_unittest.cc |
| @@ -18,7 +18,7 @@ |
| namespace gpu { |
| namespace { |
| -uint32 ReadTexel(GLuint id, GLint x, GLint y) { |
| +uint32 ReadTexel(GLuint id, GLint x, GLint y, GLenum format = GL_RGBA) { |
|
piman
2014/06/09 14:37:25
nit: no default argument in Chromium style.
|
| GLint old_fbo = 0; |
| glGetIntegerv(GL_FRAMEBUFFER_BINDING, &old_fbo); |
| @@ -41,7 +41,7 @@ uint32 ReadTexel(GLuint id, GLint x, GLint y) { |
| glCheckFramebufferStatus(GL_FRAMEBUFFER)); |
| uint32 texel = 0; |
| - glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &texel); |
| + glReadPixels(x, y, 1, 1, format, GL_UNSIGNED_BYTE, &texel); |
| glBindFramebuffer(GL_FRAMEBUFFER, old_fbo); |
| @@ -113,6 +113,91 @@ TEST_F(GLTextureMailboxTest, ProduceAndConsumeTexture) { |
| EXPECT_EQ(source_pixel, ReadTexel(tex1, 0, 0)); |
| } |
| +TEST_F(GLTextureMailboxTest, ProduceAndConsumeTextureRGB) { |
| + gl1_.MakeCurrent(); |
| + |
| + GLbyte mailbox1[GL_MAILBOX_SIZE_CHROMIUM]; |
| + glGenMailboxCHROMIUM(mailbox1); |
| + |
| + GLbyte mailbox2[GL_MAILBOX_SIZE_CHROMIUM]; |
| + glGenMailboxCHROMIUM(mailbox2); |
| + |
| + GLuint tex1; |
| + glGenTextures(1, &tex1); |
| + |
| + glBindTexture(GL_TEXTURE_2D, tex1); |
| + uint32 source_pixel = 0xFF0000; |
| + glTexImage2D(GL_TEXTURE_2D, |
| + 0, |
| + GL_RGB, |
| + 1, 1, |
| + 0, |
| + GL_RGB, |
| + GL_UNSIGNED_BYTE, |
| + &source_pixel); |
| + |
| + glProduceTextureCHROMIUM(GL_TEXTURE_2D, mailbox1); |
| + glFlush(); |
| + |
| + gl2_.MakeCurrent(); |
| + |
| + GLuint tex2; |
| + glGenTextures(1, &tex2); |
| + |
| + glBindTexture(GL_TEXTURE_2D, tex2); |
| + glConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox1); |
| + EXPECT_EQ(source_pixel, ReadTexel(tex2, 0, 0, GL_RGB)); |
| + glProduceTextureCHROMIUM(GL_TEXTURE_2D, mailbox2); |
| + glFlush(); |
| + |
| + gl1_.MakeCurrent(); |
| + |
| + glBindTexture(GL_TEXTURE_2D, tex1); |
| + glConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox2); |
| + EXPECT_EQ(source_pixel, ReadTexel(tex1, 0, 0, GL_RGB)); |
| +} |
| + |
| +TEST_F(GLTextureMailboxTest, ProduceAndConsumeTextureDirect) { |
| + gl1_.MakeCurrent(); |
| + |
| + GLbyte mailbox1[GL_MAILBOX_SIZE_CHROMIUM]; |
| + glGenMailboxCHROMIUM(mailbox1); |
| + |
| + GLbyte mailbox2[GL_MAILBOX_SIZE_CHROMIUM]; |
| + glGenMailboxCHROMIUM(mailbox2); |
| + |
| + GLuint tex1; |
| + glGenTextures(1, &tex1); |
| + |
| + glBindTexture(GL_TEXTURE_2D, tex1); |
| + uint32 source_pixel = 0xFF0000FF; |
| + glTexImage2D(GL_TEXTURE_2D, |
| + 0, |
| + GL_RGBA, |
| + 1, 1, |
| + 0, |
| + GL_RGBA, |
| + GL_UNSIGNED_BYTE, |
| + &source_pixel); |
| + |
| + glProduceTextureDirectCHROMIUM(tex1, GL_TEXTURE_2D, mailbox1); |
| + glFlush(); |
| + |
| + gl2_.MakeCurrent(); |
| + |
| + GLuint tex2 = glCreateAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox1); |
| + glBindTexture(GL_TEXTURE_2D, tex2); |
| + EXPECT_EQ(source_pixel, ReadTexel(tex2, 0, 0)); |
| + glProduceTextureDirectCHROMIUM(tex2, GL_TEXTURE_2D, mailbox2); |
| + glFlush(); |
| + |
| + gl1_.MakeCurrent(); |
| + |
| + GLuint tex3 = glCreateAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox2); |
| + glBindTexture(GL_TEXTURE_2D, tex3); |
| + EXPECT_EQ(source_pixel, ReadTexel(tex3, 0, 0)); |
| +} |
| + |
| TEST_F(GLTextureMailboxTest, ConsumeTextureValidatesKey) { |
| GLuint tex; |
| glGenTextures(1, &tex); |
| @@ -288,6 +373,30 @@ TEST_F(GLTextureMailboxTest, ProduceFrontBuffer) { |
| glDeleteTextures(1, &tex1); |
| } |
| +TEST_F(GLTextureMailboxTest, ProduceTextureDirectInvalideTarget) { |
|
piman
2014/06/09 14:37:25
nit: Invalide->Invalid ?
|
| + gl1_.MakeCurrent(); |
| + |
| + GLbyte mailbox1[GL_MAILBOX_SIZE_CHROMIUM]; |
| + glGenMailboxCHROMIUM(mailbox1); |
| + |
| + GLuint tex1; |
| + glGenTextures(1, &tex1); |
| + |
| + glBindTexture(GL_TEXTURE_CUBE_MAP, tex1); |
| + uint32 source_pixel = 0xFF0000FF; |
| + glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, |
| + 0, |
| + GL_RGBA, |
| + 1, 1, |
| + 0, |
| + GL_RGBA, |
| + GL_UNSIGNED_BYTE, |
| + &source_pixel); |
| + |
| + glProduceTextureDirectCHROMIUM(tex1, GL_TEXTURE_2D, mailbox1); |
| + EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), glGetError()); |
| +} |
| + |
| // http://crbug.com/281565 |
| #if !defined(OS_ANDROID) |
| TEST_F(GLTextureMailboxTest, ProduceFrontBufferMultipleContexts) { |