diff options
author | bajones@chromium.org <bajones@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-10 17:51:22 +0000 |
---|---|---|
committer | bajones@chromium.org <bajones@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-10 17:51:22 +0000 |
commit | 43f253da10d5a2c7e24df81fd6d8c9ef7c03cf1b (patch) | |
tree | 152dc57bb5dd1497ba97a347c4c9d2f6bad08c1b /gpu/command_buffer/tests | |
parent | 275838d7fca42818390bd4fa30d0888869420e33 (diff) | |
download | chromium_src-43f253da10d5a2c7e24df81fd6d8c9ef7c03cf1b.zip chromium_src-43f253da10d5a2c7e24df81fd6d8c9ef7c03cf1b.tar.gz chromium_src-43f253da10d5a2c7e24df81fd6d8c9ef7c03cf1b.tar.bz2 |
Adding bindless variants mailbox produce/consume
BUG=354697
Review URL: https://codereview.chromium.org/299043003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276068 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/tests')
-rw-r--r-- | gpu/command_buffer/tests/gl_texture_mailbox_unittest.cc | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/gpu/command_buffer/tests/gl_texture_mailbox_unittest.cc b/gpu/command_buffer/tests/gl_texture_mailbox_unittest.cc index ba3324d..1ce8303 100644 --- a/gpu/command_buffer/tests/gl_texture_mailbox_unittest.cc +++ b/gpu/command_buffer/tests/gl_texture_mailbox_unittest.cc @@ -42,6 +42,7 @@ uint32 ReadTexel(GLuint id, GLint x, GLint y) { uint32 texel = 0; glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &texel); + EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError()); glBindFramebuffer(GL_FRAMEBUFFER, old_fbo); @@ -113,6 +114,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 = 0xFF000000; + 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)); + 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)); +} + +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 +374,30 @@ TEST_F(GLTextureMailboxTest, ProduceFrontBuffer) { glDeleteTextures(1, &tex1); } +TEST_F(GLTextureMailboxTest, ProduceTextureDirectInvalidTarget) { + 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) { |