| 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 94f2e9566196577f663abcf79b65ea4550b37231..ca1d5c6b9fa2df16e3ab32f914de00e450907cae 100644
|
| --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
|
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
|
| @@ -6583,13 +6583,7 @@ TEST_F(GLES2DecoderManualInitTest, BeingEndQueryEXT) {
|
| EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd));
|
| EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
|
|
|
| - // Test a non-generated id fails.
|
| BeginQueryEXT begin_cmd;
|
| - begin_cmd.Init(
|
| - GL_ANY_SAMPLES_PASSED_EXT, kInvalidClientId,
|
| - kSharedMemoryId, kSharedMemoryOffset);
|
| - EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd));
|
| - EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
|
|
|
| // Test id = 0 fails.
|
| begin_cmd.Init(
|
| @@ -6597,22 +6591,12 @@ TEST_F(GLES2DecoderManualInitTest, BeingEndQueryEXT) {
|
| EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd));
|
| EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
|
|
|
| - EXPECT_CALL(*gl_, GenQueriesARB(1, _))
|
| - .WillOnce(SetArgumentPointee<1>(kNewServiceId))
|
| - .RetiresOnSaturation();
|
| GenHelper<GenQueriesEXTImmediate>(kNewClientId);
|
|
|
| - // Test bad shared memory fails
|
| - begin_cmd.Init(
|
| - GL_ANY_SAMPLES_PASSED_EXT, kNewClientId,
|
| - kInvalidSharedMemoryId, kSharedMemoryOffset);
|
| - EXPECT_NE(error::kNoError, ExecuteCmd(begin_cmd));
|
| - begin_cmd.Init(
|
| - GL_ANY_SAMPLES_PASSED_EXT, kNewClientId,
|
| - kSharedMemoryId, kInvalidSharedMemoryOffset);
|
| - EXPECT_NE(error::kNoError, ExecuteCmd(begin_cmd));
|
| -
|
| // Test valid parameters work.
|
| + EXPECT_CALL(*gl_, GenQueriesARB(1, _))
|
| + .WillOnce(SetArgumentPointee<1>(kNewServiceId))
|
| + .RetiresOnSaturation();
|
| EXPECT_CALL(*gl_, BeginQueryARB(GL_ANY_SAMPLES_PASSED_EXT, kNewServiceId))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| @@ -6651,6 +6635,117 @@ TEST_F(GLES2DecoderManualInitTest, BeingEndQueryEXT) {
|
| .RetiresOnSaturation();
|
| }
|
|
|
| +static void CheckBeginEndQueryBadMemoryFails(
|
| + GLES2DecoderTestBase* test,
|
| + GLuint client_id,
|
| + GLuint service_id,
|
| + int32 shm_id,
|
| + uint32 shm_offset) {
|
| + ::testing::StrictMock< ::gfx::MockGLInterface>* gl = test->GetGLMock();
|
| +
|
| + BeginQueryEXT begin_cmd;
|
| +
|
| + test->GenHelper<GenQueriesEXTImmediate>(client_id);
|
| +
|
| + EXPECT_CALL(*gl, GenQueriesARB(1, _))
|
| + .WillOnce(SetArgumentPointee<1>(service_id))
|
| + .RetiresOnSaturation();
|
| + EXPECT_CALL(*gl, BeginQueryARB(GL_ANY_SAMPLES_PASSED_EXT, service_id))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + // Test bad shared memory fails
|
| + begin_cmd.Init(GL_ANY_SAMPLES_PASSED_EXT, client_id, shm_id, shm_offset);
|
| + error::Error error1 = test->ExecuteCmd(begin_cmd);
|
| +
|
| + EXPECT_CALL(*gl, EndQueryARB(GL_ANY_SAMPLES_PASSED_EXT))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + EndQueryEXT end_cmd;
|
| + end_cmd.Init(GL_ANY_SAMPLES_PASSED_EXT, 1);
|
| + error::Error error2 = test->ExecuteCmd(end_cmd);
|
| +
|
| + EXPECT_CALL(*gl,
|
| + GetQueryObjectuivARB(service_id, GL_QUERY_RESULT_AVAILABLE_EXT, _))
|
| + .WillOnce(SetArgumentPointee<2>(1))
|
| + .RetiresOnSaturation();
|
| + EXPECT_CALL(*gl,
|
| + GetQueryObjectuivARB(service_id, GL_QUERY_RESULT_EXT, _))
|
| + .WillOnce(SetArgumentPointee<2>(1))
|
| + .RetiresOnSaturation();
|
| +
|
| + QueryManager* query_manager = test->GetDecoder()->GetQueryManager();
|
| + ASSERT_TRUE(query_manager != NULL);
|
| + bool process_success = query_manager->ProcessPendingQueries();
|
| +
|
| + EXPECT_TRUE(error1 != error::kNoError ||
|
| + error2 != error::kNoError ||
|
| + !process_success);
|
| +
|
| + EXPECT_CALL(*gl, DeleteQueriesARB(1, _))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +}
|
| +
|
| +TEST_F(GLES2DecoderManualInitTest, BeingEndQueryEXTBadMemoryIdFails) {
|
| + InitDecoder(
|
| + "GL_EXT_occlusion_query_boolean", // extensions
|
| + true, // has alpha
|
| + false, // has depth
|
| + false, // has stencil
|
| + true, // request alpha
|
| + false, // request depth
|
| + false, // request stencil
|
| + true); // bind generates resource
|
| +
|
| + CheckBeginEndQueryBadMemoryFails(
|
| + this, kNewClientId, kNewServiceId,
|
| + kInvalidSharedMemoryId, kSharedMemoryOffset);
|
| +}
|
| +
|
| +TEST_F(GLES2DecoderManualInitTest, BeingEndQueryEXTBadMemoryOffsetFails) {
|
| + InitDecoder(
|
| + "GL_EXT_occlusion_query_boolean", // extensions
|
| + true, // has alpha
|
| + false, // has depth
|
| + false, // has stencil
|
| + true, // request alpha
|
| + false, // request depth
|
| + false, // request stencil
|
| + true); // bind generates resource
|
| +
|
| + CheckBeginEndQueryBadMemoryFails(
|
| + this, kNewClientId, kNewServiceId,
|
| + kSharedMemoryId, kInvalidSharedMemoryOffset);
|
| +}
|
| +
|
| +TEST_F(GLES2DecoderTest, BeingEndQueryEXTCommandsIssuedCHROMIUM) {
|
| + BeginQueryEXT begin_cmd;
|
| +
|
| + GenHelper<GenQueriesEXTImmediate>(kNewClientId);
|
| +
|
| + // Test valid parameters work.
|
| + begin_cmd.Init(
|
| + GL_COMMANDS_ISSUED_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());
|
| +
|
| + // Test end succeeds
|
| + EndQueryEXT end_cmd;
|
| + end_cmd.Init(GL_COMMANDS_ISSUED_CHROMIUM, 1);
|
| + EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd));
|
| + EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| + EXPECT_FALSE(query->pending());
|
| +}
|
| +
|
|
|
| // TODO(gman): Complete this test.
|
| // TEST_F(GLES2DecoderTest, CompressedTexImage2DGLError) {
|
|
|