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 |