| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "gpu/command_buffer/service/query_manager.h" | 5 #include "gpu/command_buffer/service/query_manager.h" |
| 6 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 6 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
| 7 #include "gpu/command_buffer/service/cmd_buffer_engine.h" | 7 #include "gpu/command_buffer/service/cmd_buffer_engine.h" |
| 8 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 8 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
| 9 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" | 9 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" |
| 10 #include "gpu/command_buffer/service/feature_info.h" | 10 #include "gpu/command_buffer/service/feature_info.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 protected: | 38 protected: |
| 39 virtual void SetUp() { | 39 virtual void SetUp() { |
| 40 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); | 40 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); |
| 41 ::gfx::GLInterface::SetGLInterface(gl_.get()); | 41 ::gfx::GLInterface::SetGLInterface(gl_.get()); |
| 42 engine_.reset(new MockCommandBufferEngine()); | 42 engine_.reset(new MockCommandBufferEngine()); |
| 43 decoder_.reset(new MockGLES2Decoder()); | 43 decoder_.reset(new MockGLES2Decoder()); |
| 44 decoder_->set_engine(engine_.get()); | 44 decoder_->set_engine(engine_.get()); |
| 45 TestHelper::SetupFeatureInfoInitExpectations( | 45 TestHelper::SetupFeatureInfoInitExpectations( |
| 46 gl_.get(), | 46 gl_.get(), |
| 47 "GL_EXT_occlusion_query_boolean"); | 47 "GL_EXT_occlusion_query_boolean"); |
| 48 FeatureInfo::Ref feature_info(new FeatureInfo()); | 48 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 49 feature_info->Initialize("*"); | 49 feature_info->Initialize("*"); |
| 50 manager_.reset(new QueryManager(decoder_.get(), feature_info.get())); | 50 manager_.reset(new QueryManager(decoder_.get(), feature_info.get())); |
| 51 } | 51 } |
| 52 | 52 |
| 53 virtual void TearDown() { | 53 virtual void TearDown() { |
| 54 decoder_.reset(); | 54 decoder_.reset(); |
| 55 manager_->Destroy(false); | 55 manager_->Destroy(false); |
| 56 manager_.reset(); | 56 manager_.reset(); |
| 57 engine_.reset(); | 57 engine_.reset(); |
| 58 ::gfx::GLInterface::SetGLInterface(NULL); | 58 ::gfx::GLInterface::SetGLInterface(NULL); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 const uint8 QueryManagerTest::kInitialMemoryValue; | 147 const uint8 QueryManagerTest::kInitialMemoryValue; |
| 148 #endif | 148 #endif |
| 149 | 149 |
| 150 TEST_F(QueryManagerTest, Basic) { | 150 TEST_F(QueryManagerTest, Basic) { |
| 151 const GLuint kClient1Id = 1; | 151 const GLuint kClient1Id = 1; |
| 152 const GLuint kService1Id = 11; | 152 const GLuint kService1Id = 11; |
| 153 const GLuint kClient2Id = 2; | 153 const GLuint kClient2Id = 2; |
| 154 | 154 |
| 155 EXPECT_FALSE(manager_->HavePendingQueries()); | 155 EXPECT_FALSE(manager_->HavePendingQueries()); |
| 156 // Check we can create a Query. | 156 // Check we can create a Query. |
| 157 QueryManager::Query::Ref query( | 157 scoped_refptr<QueryManager::Query> query( |
| 158 CreateQuery(GL_ANY_SAMPLES_PASSED_EXT, kClient1Id, | 158 CreateQuery(GL_ANY_SAMPLES_PASSED_EXT, kClient1Id, |
| 159 kSharedMemoryId, kSharedMemoryOffset, kService1Id)); | 159 kSharedMemoryId, kSharedMemoryOffset, kService1Id)); |
| 160 ASSERT_TRUE(query.get() != NULL); | 160 ASSERT_TRUE(query.get() != NULL); |
| 161 // Check we can get the same Query. | 161 // Check we can get the same Query. |
| 162 EXPECT_EQ(query.get(), manager_->GetQuery(kClient1Id)); | 162 EXPECT_EQ(query.get(), manager_->GetQuery(kClient1Id)); |
| 163 // Check we get nothing for a non-existent query. | 163 // Check we get nothing for a non-existent query. |
| 164 EXPECT_TRUE(manager_->GetQuery(kClient2Id) == NULL); | 164 EXPECT_TRUE(manager_->GetQuery(kClient2Id) == NULL); |
| 165 // Check we can delete the query. | 165 // Check we can delete the query. |
| 166 manager_->RemoveQuery(kClient1Id); | 166 manager_->RemoveQuery(kClient1Id); |
| 167 // Check we get nothing for a non-existent query. | 167 // Check we get nothing for a non-existent query. |
| 168 EXPECT_TRUE(manager_->GetQuery(kClient1Id) == NULL); | 168 EXPECT_TRUE(manager_->GetQuery(kClient1Id) == NULL); |
| 169 // Check query is deleted | 169 // Check query is deleted |
| 170 EXPECT_TRUE(query->IsDeleted()); | 170 EXPECT_TRUE(query->IsDeleted()); |
| 171 EXPECT_FALSE(manager_->HavePendingQueries()); | 171 EXPECT_FALSE(manager_->HavePendingQueries()); |
| 172 } | 172 } |
| 173 | 173 |
| 174 TEST_F(QueryManagerTest, Destroy) { | 174 TEST_F(QueryManagerTest, Destroy) { |
| 175 const GLuint kClient1Id = 1; | 175 const GLuint kClient1Id = 1; |
| 176 const GLuint kService1Id = 11; | 176 const GLuint kService1Id = 11; |
| 177 | 177 |
| 178 // Create Query. | 178 // Create Query. |
| 179 QueryManager::Query::Ref query( | 179 scoped_refptr<QueryManager::Query> query( |
| 180 CreateQuery(GL_ANY_SAMPLES_PASSED_EXT, kClient1Id, | 180 CreateQuery(GL_ANY_SAMPLES_PASSED_EXT, kClient1Id, |
| 181 kSharedMemoryId, kSharedMemoryOffset, kService1Id)); | 181 kSharedMemoryId, kSharedMemoryOffset, kService1Id)); |
| 182 ASSERT_TRUE(query.get() != NULL); | 182 ASSERT_TRUE(query.get() != NULL); |
| 183 EXPECT_CALL(*gl_, DeleteQueriesARB(1, ::testing::Pointee(kService1Id))) | 183 EXPECT_CALL(*gl_, DeleteQueriesARB(1, ::testing::Pointee(kService1Id))) |
| 184 .Times(1) | 184 .Times(1) |
| 185 .RetiresOnSaturation(); | 185 .RetiresOnSaturation(); |
| 186 manager_->Destroy(true); | 186 manager_->Destroy(true); |
| 187 // Check we get nothing for a non-existent query. | 187 // Check we get nothing for a non-existent query. |
| 188 EXPECT_TRUE(manager_->GetQuery(kClient1Id) == NULL); | 188 EXPECT_TRUE(manager_->GetQuery(kClient1Id) == NULL); |
| 189 // Check query is deleted | 189 // Check query is deleted |
| 190 EXPECT_TRUE(query->IsDeleted()); | 190 EXPECT_TRUE(query->IsDeleted()); |
| 191 } | 191 } |
| 192 | 192 |
| 193 TEST_F(QueryManagerTest, QueryBasic) { | 193 TEST_F(QueryManagerTest, QueryBasic) { |
| 194 const GLuint kClient1Id = 1; | 194 const GLuint kClient1Id = 1; |
| 195 const GLuint kService1Id = 11; | 195 const GLuint kService1Id = 11; |
| 196 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; | 196 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; |
| 197 | 197 |
| 198 // Create Query. | 198 // Create Query. |
| 199 QueryManager::Query::Ref query( | 199 scoped_refptr<QueryManager::Query> query( |
| 200 CreateQuery(kTarget, kClient1Id, | 200 CreateQuery(kTarget, kClient1Id, |
| 201 kSharedMemoryId, kSharedMemoryOffset, kService1Id)); | 201 kSharedMemoryId, kSharedMemoryOffset, kService1Id)); |
| 202 ASSERT_TRUE(query.get() != NULL); | 202 ASSERT_TRUE(query.get() != NULL); |
| 203 | 203 |
| 204 EXPECT_TRUE(query->IsValid()); | 204 EXPECT_TRUE(query->IsValid()); |
| 205 EXPECT_FALSE(query->IsDeleted()); | 205 EXPECT_FALSE(query->IsDeleted()); |
| 206 EXPECT_FALSE(query->pending()); | 206 EXPECT_FALSE(query->pending()); |
| 207 EXPECT_EQ(kTarget, query->target()); | 207 EXPECT_EQ(kTarget, query->target()); |
| 208 EXPECT_EQ(kSharedMemoryId, query->shm_id()); | 208 EXPECT_EQ(kSharedMemoryId, query->shm_id()); |
| 209 EXPECT_EQ(kSharedMemoryOffset, query->shm_offset()); | 209 EXPECT_EQ(kSharedMemoryOffset, query->shm_offset()); |
| 210 } | 210 } |
| 211 | 211 |
| 212 TEST_F(QueryManagerTest, ProcessPendingQuery) { | 212 TEST_F(QueryManagerTest, ProcessPendingQuery) { |
| 213 const GLuint kClient1Id = 1; | 213 const GLuint kClient1Id = 1; |
| 214 const GLuint kService1Id = 11; | 214 const GLuint kService1Id = 11; |
| 215 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; | 215 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; |
| 216 const uint32 kSubmitCount = 123; | 216 const uint32 kSubmitCount = 123; |
| 217 const GLuint kResult = 1; | 217 const GLuint kResult = 1; |
| 218 | 218 |
| 219 // Check nothing happens if there are no pending queries. | 219 // Check nothing happens if there are no pending queries. |
| 220 EXPECT_TRUE(manager_->ProcessPendingQueries()); | 220 EXPECT_TRUE(manager_->ProcessPendingQueries()); |
| 221 | 221 |
| 222 // Create Query. | 222 // Create Query. |
| 223 QueryManager::Query::Ref query( | 223 scoped_refptr<QueryManager::Query> query( |
| 224 CreateQuery(kTarget, kClient1Id, | 224 CreateQuery(kTarget, kClient1Id, |
| 225 kSharedMemoryId, kSharedMemoryOffset, kService1Id)); | 225 kSharedMemoryId, kSharedMemoryOffset, kService1Id)); |
| 226 ASSERT_TRUE(query.get() != NULL); | 226 ASSERT_TRUE(query.get() != NULL); |
| 227 | 227 |
| 228 // Setup shared memory like client would. | 228 // Setup shared memory like client would. |
| 229 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( | 229 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( |
| 230 kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync)); | 230 kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync)); |
| 231 ASSERT_TRUE(sync != NULL); | 231 ASSERT_TRUE(sync != NULL); |
| 232 sync->Reset(); | 232 sync->Reset(); |
| 233 | 233 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 const GLuint kResult3 = 1; | 284 const GLuint kResult3 = 1; |
| 285 | 285 |
| 286 // Setup shared memory like client would. | 286 // Setup shared memory like client would. |
| 287 QuerySync* sync1 = decoder_->GetSharedMemoryAs<QuerySync*>( | 287 QuerySync* sync1 = decoder_->GetSharedMemoryAs<QuerySync*>( |
| 288 kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync1) * 3); | 288 kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync1) * 3); |
| 289 ASSERT_TRUE(sync1 != NULL); | 289 ASSERT_TRUE(sync1 != NULL); |
| 290 QuerySync* sync2 = sync1 + 1; | 290 QuerySync* sync2 = sync1 + 1; |
| 291 QuerySync* sync3 = sync2 + 1; | 291 QuerySync* sync3 = sync2 + 1; |
| 292 | 292 |
| 293 // Create Queries. | 293 // Create Queries. |
| 294 QueryManager::Query::Ref query1( | 294 scoped_refptr<QueryManager::Query> query1( |
| 295 CreateQuery(kTarget, kClient1Id, | 295 CreateQuery(kTarget, kClient1Id, |
| 296 kSharedMemoryId, kSharedMemoryOffset + sizeof(*sync1) * 0, | 296 kSharedMemoryId, kSharedMemoryOffset + sizeof(*sync1) * 0, |
| 297 kService1Id)); | 297 kService1Id)); |
| 298 QueryManager::Query::Ref query2( | 298 scoped_refptr<QueryManager::Query> query2( |
| 299 CreateQuery(kTarget, kClient2Id, | 299 CreateQuery(kTarget, kClient2Id, |
| 300 kSharedMemoryId, kSharedMemoryOffset + sizeof(*sync1) * 1, | 300 kSharedMemoryId, kSharedMemoryOffset + sizeof(*sync1) * 1, |
| 301 kService2Id)); | 301 kService2Id)); |
| 302 QueryManager::Query::Ref query3( | 302 scoped_refptr<QueryManager::Query> query3( |
| 303 CreateQuery(kTarget, kClient3Id, | 303 CreateQuery(kTarget, kClient3Id, |
| 304 kSharedMemoryId, kSharedMemoryOffset + sizeof(*sync1) * 2, | 304 kSharedMemoryId, kSharedMemoryOffset + sizeof(*sync1) * 2, |
| 305 kService3Id)); | 305 kService3Id)); |
| 306 ASSERT_TRUE(query1.get() != NULL); | 306 ASSERT_TRUE(query1.get() != NULL); |
| 307 ASSERT_TRUE(query2.get() != NULL); | 307 ASSERT_TRUE(query2.get() != NULL); |
| 308 ASSERT_TRUE(query3.get() != NULL); | 308 ASSERT_TRUE(query3.get() != NULL); |
| 309 EXPECT_FALSE(manager_->HavePendingQueries()); | 309 EXPECT_FALSE(manager_->HavePendingQueries()); |
| 310 | 310 |
| 311 sync1->Reset(); | 311 sync1->Reset(); |
| 312 sync2->Reset(); | 312 sync2->Reset(); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 } | 388 } |
| 389 | 389 |
| 390 TEST_F(QueryManagerTest, ProcessPendingBadSharedMemoryId) { | 390 TEST_F(QueryManagerTest, ProcessPendingBadSharedMemoryId) { |
| 391 const GLuint kClient1Id = 1; | 391 const GLuint kClient1Id = 1; |
| 392 const GLuint kService1Id = 11; | 392 const GLuint kService1Id = 11; |
| 393 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; | 393 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; |
| 394 const uint32 kSubmitCount = 123; | 394 const uint32 kSubmitCount = 123; |
| 395 const GLuint kResult = 1; | 395 const GLuint kResult = 1; |
| 396 | 396 |
| 397 // Create Query. | 397 // Create Query. |
| 398 QueryManager::Query::Ref query( | 398 scoped_refptr<QueryManager::Query> query( |
| 399 CreateQuery(kTarget, kClient1Id, | 399 CreateQuery(kTarget, kClient1Id, |
| 400 kInvalidSharedMemoryId, kSharedMemoryOffset, kService1Id)); | 400 kInvalidSharedMemoryId, kSharedMemoryOffset, kService1Id)); |
| 401 ASSERT_TRUE(query.get() != NULL); | 401 ASSERT_TRUE(query.get() != NULL); |
| 402 | 402 |
| 403 // Queue it | 403 // Queue it |
| 404 QueueQuery(query.get(), kService1Id, kSubmitCount); | 404 QueueQuery(query.get(), kService1Id, kSubmitCount); |
| 405 | 405 |
| 406 // Process with return available. | 406 // Process with return available. |
| 407 // Expect 2 GL commands. | 407 // Expect 2 GL commands. |
| 408 EXPECT_CALL(*gl_, | 408 EXPECT_CALL(*gl_, |
| 409 GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_AVAILABLE_EXT, _)) | 409 GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_AVAILABLE_EXT, _)) |
| 410 .WillOnce(SetArgumentPointee<2>(1)) | 410 .WillOnce(SetArgumentPointee<2>(1)) |
| 411 .RetiresOnSaturation(); | 411 .RetiresOnSaturation(); |
| 412 EXPECT_CALL(*gl_, | 412 EXPECT_CALL(*gl_, |
| 413 GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_EXT, _)) | 413 GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_EXT, _)) |
| 414 .WillOnce(SetArgumentPointee<2>(kResult)) | 414 .WillOnce(SetArgumentPointee<2>(kResult)) |
| 415 .RetiresOnSaturation(); | 415 .RetiresOnSaturation(); |
| 416 EXPECT_FALSE(manager_->ProcessPendingQueries()); | 416 EXPECT_FALSE(manager_->ProcessPendingQueries()); |
| 417 } | 417 } |
| 418 | 418 |
| 419 TEST_F(QueryManagerTest, ProcessPendingBadSharedMemoryOffset) { | 419 TEST_F(QueryManagerTest, ProcessPendingBadSharedMemoryOffset) { |
| 420 const GLuint kClient1Id = 1; | 420 const GLuint kClient1Id = 1; |
| 421 const GLuint kService1Id = 11; | 421 const GLuint kService1Id = 11; |
| 422 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; | 422 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; |
| 423 const uint32 kSubmitCount = 123; | 423 const uint32 kSubmitCount = 123; |
| 424 const GLuint kResult = 1; | 424 const GLuint kResult = 1; |
| 425 | 425 |
| 426 // Create Query. | 426 // Create Query. |
| 427 QueryManager::Query::Ref query( | 427 scoped_refptr<QueryManager::Query> query( |
| 428 CreateQuery(kTarget, kClient1Id, | 428 CreateQuery(kTarget, kClient1Id, |
| 429 kSharedMemoryId, kInvalidSharedMemoryOffset, kService1Id)); | 429 kSharedMemoryId, kInvalidSharedMemoryOffset, kService1Id)); |
| 430 ASSERT_TRUE(query.get() != NULL); | 430 ASSERT_TRUE(query.get() != NULL); |
| 431 | 431 |
| 432 // Queue it | 432 // Queue it |
| 433 QueueQuery(query.get(), kService1Id, kSubmitCount); | 433 QueueQuery(query.get(), kService1Id, kSubmitCount); |
| 434 | 434 |
| 435 // Process with return available. | 435 // Process with return available. |
| 436 // Expect 2 GL commands. | 436 // Expect 2 GL commands. |
| 437 EXPECT_CALL(*gl_, | 437 EXPECT_CALL(*gl_, |
| 438 GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_AVAILABLE_EXT, _)) | 438 GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_AVAILABLE_EXT, _)) |
| 439 .WillOnce(SetArgumentPointee<2>(1)) | 439 .WillOnce(SetArgumentPointee<2>(1)) |
| 440 .RetiresOnSaturation(); | 440 .RetiresOnSaturation(); |
| 441 EXPECT_CALL(*gl_, | 441 EXPECT_CALL(*gl_, |
| 442 GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_EXT, _)) | 442 GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_EXT, _)) |
| 443 .WillOnce(SetArgumentPointee<2>(kResult)) | 443 .WillOnce(SetArgumentPointee<2>(kResult)) |
| 444 .RetiresOnSaturation(); | 444 .RetiresOnSaturation(); |
| 445 EXPECT_FALSE(manager_->ProcessPendingQueries()); | 445 EXPECT_FALSE(manager_->ProcessPendingQueries()); |
| 446 } | 446 } |
| 447 | 447 |
| 448 TEST_F(QueryManagerTest, ExitWithPendingQuery) { | 448 TEST_F(QueryManagerTest, ExitWithPendingQuery) { |
| 449 const GLuint kClient1Id = 1; | 449 const GLuint kClient1Id = 1; |
| 450 const GLuint kService1Id = 11; | 450 const GLuint kService1Id = 11; |
| 451 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; | 451 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; |
| 452 const uint32 kSubmitCount = 123; | 452 const uint32 kSubmitCount = 123; |
| 453 | 453 |
| 454 // Create Query. | 454 // Create Query. |
| 455 QueryManager::Query::Ref query( | 455 scoped_refptr<QueryManager::Query> query( |
| 456 CreateQuery(kTarget, kClient1Id, | 456 CreateQuery(kTarget, kClient1Id, |
| 457 kSharedMemoryId, kSharedMemoryOffset, kService1Id)); | 457 kSharedMemoryId, kSharedMemoryOffset, kService1Id)); |
| 458 ASSERT_TRUE(query.get() != NULL); | 458 ASSERT_TRUE(query.get() != NULL); |
| 459 | 459 |
| 460 // Queue it | 460 // Queue it |
| 461 QueueQuery(query.get(), kService1Id, kSubmitCount); | 461 QueueQuery(query.get(), kService1Id, kSubmitCount); |
| 462 } | 462 } |
| 463 | 463 |
| 464 // Test that when based on ARB_occlusion_query2 we use GL_ANY_SAMPLES_PASSED_ARB | 464 // Test that when based on ARB_occlusion_query2 we use GL_ANY_SAMPLES_PASSED_ARB |
| 465 // for GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT | 465 // for GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT |
| 466 TEST_F(QueryManagerTest, ARBOcclusionQuery2) { | 466 TEST_F(QueryManagerTest, ARBOcclusionQuery2) { |
| 467 const GLuint kClient1Id = 1; | 467 const GLuint kClient1Id = 1; |
| 468 const GLuint kService1Id = 11; | 468 const GLuint kService1Id = 11; |
| 469 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT; | 469 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT; |
| 470 const uint32 kSubmitCount = 123; | 470 const uint32 kSubmitCount = 123; |
| 471 | 471 |
| 472 TestHelper::SetupFeatureInfoInitExpectations( | 472 TestHelper::SetupFeatureInfoInitExpectations( |
| 473 gl_.get(), | 473 gl_.get(), |
| 474 "GL_ARB_occlusion_query2"); | 474 "GL_ARB_occlusion_query2"); |
| 475 FeatureInfo::Ref feature_info(new FeatureInfo()); | 475 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 476 feature_info->Initialize("*"); | 476 feature_info->Initialize("*"); |
| 477 scoped_ptr<QueryManager> manager( | 477 scoped_ptr<QueryManager> manager( |
| 478 new QueryManager(decoder_.get(), feature_info.get())); | 478 new QueryManager(decoder_.get(), feature_info.get())); |
| 479 | 479 |
| 480 EXPECT_CALL(*gl_, GenQueriesARB(1, _)) | 480 EXPECT_CALL(*gl_, GenQueriesARB(1, _)) |
| 481 .WillOnce(SetArgumentPointee<1>(kService1Id)) | 481 .WillOnce(SetArgumentPointee<1>(kService1Id)) |
| 482 .RetiresOnSaturation(); | 482 .RetiresOnSaturation(); |
| 483 QueryManager::Query* query = manager->CreateQuery( | 483 QueryManager::Query* query = manager->CreateQuery( |
| 484 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 484 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 485 ASSERT_TRUE(query != NULL); | 485 ASSERT_TRUE(query != NULL); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 499 // for GL_ANY_SAMPLES_PASSED_EXT | 499 // for GL_ANY_SAMPLES_PASSED_EXT |
| 500 TEST_F(QueryManagerTest, ARBOcclusionQuery) { | 500 TEST_F(QueryManagerTest, ARBOcclusionQuery) { |
| 501 const GLuint kClient1Id = 1; | 501 const GLuint kClient1Id = 1; |
| 502 const GLuint kService1Id = 11; | 502 const GLuint kService1Id = 11; |
| 503 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; | 503 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; |
| 504 const uint32 kSubmitCount = 123; | 504 const uint32 kSubmitCount = 123; |
| 505 | 505 |
| 506 TestHelper::SetupFeatureInfoInitExpectations( | 506 TestHelper::SetupFeatureInfoInitExpectations( |
| 507 gl_.get(), | 507 gl_.get(), |
| 508 "GL_ARB_occlusion_query"); | 508 "GL_ARB_occlusion_query"); |
| 509 FeatureInfo::Ref feature_info(new FeatureInfo()); | 509 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 510 feature_info->Initialize("*"); | 510 feature_info->Initialize("*"); |
| 511 scoped_ptr<QueryManager> manager( | 511 scoped_ptr<QueryManager> manager( |
| 512 new QueryManager(decoder_.get(), feature_info.get())); | 512 new QueryManager(decoder_.get(), feature_info.get())); |
| 513 | 513 |
| 514 EXPECT_CALL(*gl_, GenQueriesARB(1, _)) | 514 EXPECT_CALL(*gl_, GenQueriesARB(1, _)) |
| 515 .WillOnce(SetArgumentPointee<1>(kService1Id)) | 515 .WillOnce(SetArgumentPointee<1>(kService1Id)) |
| 516 .RetiresOnSaturation(); | 516 .RetiresOnSaturation(); |
| 517 QueryManager::Query* query = manager->CreateQuery( | 517 QueryManager::Query* query = manager->CreateQuery( |
| 518 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 518 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 519 ASSERT_TRUE(query != NULL); | 519 ASSERT_TRUE(query != NULL); |
| 520 | 520 |
| 521 EXPECT_CALL(*gl_, BeginQueryARB(GL_SAMPLES_PASSED_ARB, kService1Id)) | 521 EXPECT_CALL(*gl_, BeginQueryARB(GL_SAMPLES_PASSED_ARB, kService1Id)) |
| 522 .Times(1) | 522 .Times(1) |
| 523 .RetiresOnSaturation(); | 523 .RetiresOnSaturation(); |
| 524 EXPECT_CALL(*gl_, EndQueryARB(GL_SAMPLES_PASSED_ARB)) | 524 EXPECT_CALL(*gl_, EndQueryARB(GL_SAMPLES_PASSED_ARB)) |
| 525 .Times(1) | 525 .Times(1) |
| 526 .RetiresOnSaturation(); | 526 .RetiresOnSaturation(); |
| 527 EXPECT_TRUE(manager->BeginQuery(query)); | 527 EXPECT_TRUE(manager->BeginQuery(query)); |
| 528 EXPECT_TRUE(manager->EndQuery(query, kSubmitCount)); | 528 EXPECT_TRUE(manager->EndQuery(query, kSubmitCount)); |
| 529 manager->Destroy(false); | 529 manager->Destroy(false); |
| 530 } | 530 } |
| 531 | 531 |
| 532 TEST_F(QueryManagerTest, GetErrorQuery) { | 532 TEST_F(QueryManagerTest, GetErrorQuery) { |
| 533 const GLuint kClient1Id = 1; | 533 const GLuint kClient1Id = 1; |
| 534 const GLenum kTarget = GL_GET_ERROR_QUERY_CHROMIUM; | 534 const GLenum kTarget = GL_GET_ERROR_QUERY_CHROMIUM; |
| 535 const uint32 kSubmitCount = 123; | 535 const uint32 kSubmitCount = 123; |
| 536 | 536 |
| 537 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), ""); | 537 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), ""); |
| 538 FeatureInfo::Ref feature_info(new FeatureInfo()); | 538 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 539 feature_info->Initialize("*"); | 539 feature_info->Initialize("*"); |
| 540 scoped_ptr<QueryManager> manager( | 540 scoped_ptr<QueryManager> manager( |
| 541 new QueryManager(decoder_.get(), feature_info.get())); | 541 new QueryManager(decoder_.get(), feature_info.get())); |
| 542 | 542 |
| 543 QueryManager::Query* query = manager->CreateQuery( | 543 QueryManager::Query* query = manager->CreateQuery( |
| 544 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 544 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 545 ASSERT_TRUE(query != NULL); | 545 ASSERT_TRUE(query != NULL); |
| 546 | 546 |
| 547 // Setup shared memory like client would. | 547 // Setup shared memory like client would. |
| 548 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( | 548 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 561 | 561 |
| 562 EXPECT_EQ(static_cast<GLuint>(GL_INVALID_ENUM), sync->result); | 562 EXPECT_EQ(static_cast<GLuint>(GL_INVALID_ENUM), sync->result); |
| 563 | 563 |
| 564 manager->Destroy(false); | 564 manager->Destroy(false); |
| 565 } | 565 } |
| 566 | 566 |
| 567 } // namespace gles2 | 567 } // namespace gles2 |
| 568 } // namespace gpu | 568 } // namespace gpu |
| 569 | 569 |
| 570 | 570 |
| OLD | NEW |