Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Unified Diff: gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc

Issue 14095009: Android: Fix up video to work with mailboxes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
index 7f644a748a089b6b4e82fbe9e2b5b788b1d774ab..2c0b7823cc86b6af55c05b96f11cfc8f98060f88 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
@@ -5923,6 +5923,105 @@ TEST_F(GLES2DecoderManualInitTest, ReCreateStreamTextureCHROMIUM) {
EXPECT_TRUE(texture->IsStreamTexture());
}
+TEST_F(GLES2DecoderManualInitTest, ProduceAndConsumeStreamTextureCHROMIUM) {
+ InitDecoder(
+ "GL_CHROMIUM_stream_texture GL_OES_EGL_image_external", // extensions
+ false, // has alpha
+ false, // has depth
+ false, // has stencil
+ false, // request alpha
+ false, // request depth
+ false, // request stencil
+ true); // bind generates resource
+
+ StrictMock<MockStreamTextureManager> manager;
+ StrictMock<MockStreamTexture> stream_texture;
+ decoder_->SetStreamTextureManager(&manager);
+
+ Texture* texture = GetTexture(client_texture_id_);
+ texture->SetStreamTexture(true);
+
+ EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_EXTERNAL_OES, kServiceTextureId))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(manager, LookupStreamTexture(kServiceTextureId))
+ .WillOnce(Return(&stream_texture))
+ .RetiresOnSaturation();
+ EXPECT_CALL(stream_texture, Update())
+ .Times(1)
+ .RetiresOnSaturation();
+
+ BindTexture cmd;
+ cmd.Init(GL_TEXTURE_EXTERNAL_OES, client_texture_id_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+
+ GLbyte mailbox[GL_MAILBOX_SIZE_CHROMIUM];
+ group().mailbox_manager()->GenerateMailboxName(
+ reinterpret_cast<MailboxName*>(mailbox));
+
+ memcpy(shared_memory_address_, mailbox, sizeof(mailbox));
+
+ EXPECT_EQ(kServiceTextureId, texture->service_id());
+
+ // Assigns and binds new service side texture ID.
+ EXPECT_CALL(*gl_, GenTextures(1, _))
+ .WillOnce(SetArgumentPointee<1>(kNewServiceId))
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_EXTERNAL_OES, kNewServiceId))
+ .Times(1)
+ .RetiresOnSaturation();
+
+ ProduceTextureCHROMIUM produce_cmd;
+ produce_cmd.Init(
+ GL_TEXTURE_EXTERNAL_OES, kSharedMemoryId, kSharedMemoryOffset);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(produce_cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+
+ // Assigns and binds original service size texture ID.
+ EXPECT_CALL(*gl_, DeleteTextures(1, _))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_EXTERNAL_OES, kServiceTextureId))
+ .Times(1)
+ .RetiresOnSaturation();
+
+ // TextureManager::Restore will set TexParameters.
+ EXPECT_CALL(*gl_, TexParameteri(
+ GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_LINEAR))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, TexParameteri(
+ GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_LINEAR))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, TexParameteri(
+ GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, TexParameteri(
+ GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE))
+ .Times(1)
+ .RetiresOnSaturation();
+ #if 0
+ EXPECT_CALL(*gl_, TexParameteri(
+ GL_TEXTURE_2D, GL_TEXTURE_USAGE_ANGLE, GL_NONE))
+ .Times(1)
+ .RetiresOnSaturation();
+ #endif
+
+ // Shared mem got clobbered from GetError() above.
+ memcpy(shared_memory_address_, mailbox, sizeof(mailbox));
+ ConsumeTextureCHROMIUM consume_cmd;
+ consume_cmd.Init(
+ GL_TEXTURE_EXTERNAL_OES, kSharedMemoryId, kSharedMemoryOffset);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(consume_cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+
+ // Service ID is restored.
+ EXPECT_EQ(kServiceTextureId, texture->service_id());
+}
+
TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleBindTexture) {
InitDecoder(
"GL_ARB_texture_rectangle", // extensions

Powered by Google App Engine
This is Rietveld 408576698