| 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 016bfab76b7aee824b029569fa88cf528fb0d3fa..e621269b3aa91912eddfa5d8142df6fe4a1d72ac 100644
|
| --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
|
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
|
| @@ -7112,6 +7112,7 @@ const QueryType kQueryTypes[] = {
|
| { GL_ASYNC_PIXEL_UNPACK_COMPLETED_CHROMIUM, false },
|
| { GL_ASYNC_PIXEL_PACK_COMPLETED_CHROMIUM, false },
|
| { GL_GET_ERROR_QUERY_CHROMIUM, false },
|
| + { GL_COMMANDS_COMPLETED_CHROMIUM, false },
|
| { GL_ANY_SAMPLES_PASSED_EXT, true },
|
| };
|
|
|
| @@ -7160,6 +7161,9 @@ static void CheckBeginEndQueryBadMemoryFails(
|
| .WillOnce(Return(GL_NO_ERROR))
|
| .RetiresOnSaturation();
|
| }
|
| + if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) {
|
| + EXPECT_CALL(*gl, Finish()).Times(1).RetiresOnSaturation();
|
| + }
|
|
|
| EndQueryEXT end_cmd;
|
| end_cmd.Init(query_type.type, 1);
|
| @@ -7276,6 +7280,64 @@ TEST_F(GLES2DecoderTest, BeginEndQueryEXTGetErrorQueryCHROMIUM) {
|
| static_cast<GLenum>(sync->result));
|
| }
|
|
|
| +TEST_F(GLES2DecoderManualInitTest, BeginEndQueryEXTCommandsCompletedCHROMIUM) {
|
| + InitState init;
|
| + init.extensions = "GL_ARB_sync";
|
| + init.gl_version = "opengl es 2.0";
|
| + init.has_alpha = true;
|
| + init.request_alpha = true;
|
| + init.bind_generates_resource = true;
|
| + InitDecoder(init);
|
| +
|
| + GenHelper<GenQueriesEXTImmediate>(kNewClientId);
|
| +
|
| + BeginQueryEXT begin_cmd;
|
| + begin_cmd.Init(GL_COMMANDS_COMPLETED_CHROMIUM,
|
| + kNewClientId,
|
| + kSharedMemoryId,
|
| + kSharedMemoryOffset);
|
| + EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd));
|
| + EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| +
|
| + QueryManager* query_manager = decoder_->GetQueryManager();
|
| + ASSERT_TRUE(query_manager != NULL);
|
| + QueryManager::Query* query = query_manager->GetQuery(kNewClientId);
|
| + ASSERT_TRUE(query != NULL);
|
| + EXPECT_FALSE(query->pending());
|
| +
|
| + GLsync kGlSync = reinterpret_cast<GLsync>(0xdeadbeef);
|
| + EXPECT_CALL(*gl_, FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0))
|
| + .WillOnce(Return(kGlSync))
|
| + .RetiresOnSaturation();
|
| +
|
| + EndQueryEXT end_cmd;
|
| + end_cmd.Init(GL_COMMANDS_COMPLETED_CHROMIUM, 1);
|
| + EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd));
|
| + EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| + EXPECT_TRUE(query->pending());
|
| +
|
| + EXPECT_CALL(*gl_, ClientWaitSync(kGlSync, _, _))
|
| + .WillOnce(Return(GL_TIMEOUT_EXPIRED))
|
| + .RetiresOnSaturation();
|
| + bool process_success = query_manager->ProcessPendingQueries();
|
| +
|
| + EXPECT_TRUE(process_success);
|
| + EXPECT_TRUE(query->pending());
|
| +
|
| + EXPECT_CALL(*gl_, ClientWaitSync(kGlSync, _, _))
|
| + .WillOnce(Return(GL_ALREADY_SIGNALED))
|
| + .RetiresOnSaturation();
|
| + process_success = query_manager->ProcessPendingQueries();
|
| +
|
| + EXPECT_TRUE(process_success);
|
| + EXPECT_FALSE(query->pending());
|
| + QuerySync* sync = static_cast<QuerySync*>(shared_memory_address_);
|
| + EXPECT_EQ(static_cast<GLenum>(0), static_cast<GLenum>(sync->result));
|
| +
|
| + EXPECT_CALL(*gl_, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation();
|
| + ResetDecoder();
|
| +}
|
| +
|
| TEST_F(GLES2DecoderTest, ProduceAndConsumeTextureCHROMIUM) {
|
| Mailbox mailbox = Mailbox::Generate();
|
|
|
|
|