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 25d96c71b4d72312cdbe8984e748f7e779527c27..17234b90b543ab1ce8f817dd4fe0a53c684a573b 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc |
@@ -4874,6 +4874,55 @@ TEST_F(GLES2DecoderManualInitTest, StreamTextureCHROMIUMNullMgr) { |
GetGLError(); // ignore internal error |
} |
+TEST_F(GLES2DecoderManualInitTest, ReCreateStreamTextureCHROMIUM) { |
+ const GLuint kObjectId = 123; |
+ 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> texture; |
+ decoder_->SetStreamTextureManager(&manager); |
+ |
+ EXPECT_CALL(manager, LookupStreamTexture(kServiceTextureId)) |
+ .WillOnce(Return(&texture)) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(texture, Update()) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(manager, DestroyStreamTexture(kServiceTextureId)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(manager, CreateStreamTexture(kServiceTextureId, |
+ client_texture_id_)) |
+ .WillOnce(Return(kObjectId)) |
+ .RetiresOnSaturation(); |
+ |
+ TextureManager::TextureInfo* info = GetTextureInfo(client_texture_id_); |
+ info->SetStreamTexture(true); |
+ |
+ DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ |
+ DestroyStreamTextureCHROMIUM cmd; |
+ cmd.Init(client_texture_id_); |
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ EXPECT_FALSE(info->IsStreamTexture()); |
+ |
+ CreateStreamTextureCHROMIUM cmd2; |
+ cmd2.Init(client_texture_id_, shared_memory_id_, shared_memory_offset_); |
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ EXPECT_TRUE(info->IsStreamTexture()); |
+} |
+ |
TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleBindTexture) { |
InitDecoder( |
"GL_ARB_texture_rectangle", // extensions |