| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 8 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
| 9 #include "gpu/command_buffer/service/cmd_buffer_engine.h" | 9 #include "gpu/command_buffer/service/cmd_buffer_engine.h" |
| 10 #include "gpu/command_buffer/service/error_state_mock.h" | 10 #include "gpu/command_buffer/service/error_state_mock.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 static const uint32_t kInvalidSharedMemoryOffset = kSharedBufferSize + 1; | 39 static const uint32_t kInvalidSharedMemoryOffset = kSharedBufferSize + 1; |
| 40 static const uint32_t kInitialResult = 0xBDBDBDBDu; | 40 static const uint32_t kInitialResult = 0xBDBDBDBDu; |
| 41 static const uint8_t kInitialMemoryValue = 0xBDu; | 41 static const uint8_t kInitialMemoryValue = 0xBDu; |
| 42 | 42 |
| 43 QueryManagerTest() { | 43 QueryManagerTest() { |
| 44 } | 44 } |
| 45 ~QueryManagerTest() override {} | 45 ~QueryManagerTest() override {} |
| 46 | 46 |
| 47 protected: | 47 protected: |
| 48 void SetUp() override { | 48 void SetUp() override { |
| 49 GpuDriverBugWorkarounds::Initialize(gpu_driver_bug_workarounds_); |
| 49 GpuServiceTest::SetUpWithGLVersion("3.2", | 50 GpuServiceTest::SetUpWithGLVersion("3.2", |
| 50 "GL_ARB_occlusion_query, " | 51 "GL_ARB_occlusion_query, " |
| 51 "GL_ARB_timer_query"); | 52 "GL_ARB_timer_query"); |
| 52 SetUpMockGL("GL_EXT_occlusion_query_boolean, GL_ARB_timer_query"); | 53 SetUpMockGL("GL_EXT_occlusion_query_boolean, GL_ARB_timer_query"); |
| 53 } | 54 } |
| 54 | 55 |
| 55 void TearDown() override { | 56 void TearDown() override { |
| 56 decoder_.reset(); | 57 decoder_.reset(); |
| 57 manager_->Destroy(false); | 58 manager_->Destroy(false); |
| 58 manager_.reset(); | 59 manager_.reset(); |
| 59 engine_.reset(); | 60 engine_.reset(); |
| 60 GpuServiceTest::TearDown(); | 61 GpuServiceTest::TearDown(); |
| 61 } | 62 } |
| 62 | 63 |
| 63 void SetUpMockGL(const char* extension_expectations) { | 64 void SetUpMockGL(const char* extension_expectations) { |
| 64 engine_.reset(new MockCommandBufferEngine()); | 65 engine_.reset(new MockCommandBufferEngine()); |
| 65 decoder_.reset(new MockGLES2Decoder()); | 66 decoder_.reset(new MockGLES2Decoder()); |
| 66 decoder_->set_engine(engine_.get()); | 67 decoder_->set_engine(engine_.get()); |
| 67 TestHelper::SetupFeatureInfoInitExpectations( | 68 TestHelper::SetupFeatureInfoInitExpectations( |
| 68 gl_.get(), extension_expectations); | 69 gl_.get(), extension_expectations); |
| 69 EXPECT_CALL(*decoder_.get(), GetGLContext()) | 70 EXPECT_CALL(*decoder_.get(), GetGLContext()) |
| 70 .WillRepeatedly(Return(GetGLContext())); | 71 .WillRepeatedly(Return(GetGLContext())); |
| 71 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 72 scoped_refptr<FeatureInfo> feature_info( |
| 73 new FeatureInfo(gpu_driver_bug_workarounds_)); |
| 72 feature_info->InitializeForTesting(); | 74 feature_info->InitializeForTesting(); |
| 73 manager_.reset(new QueryManager(decoder_.get(), feature_info.get())); | 75 manager_.reset(new QueryManager(decoder_.get(), feature_info.get())); |
| 74 } | 76 } |
| 75 | 77 |
| 76 QueryManager::Query* CreateQuery(GLenum target, | 78 QueryManager::Query* CreateQuery(GLenum target, |
| 77 GLuint client_id, | 79 GLuint client_id, |
| 78 int32_t shm_id, | 80 int32_t shm_id, |
| 79 uint32_t shm_offset, | 81 uint32_t shm_offset, |
| 80 GLuint service_id) { | 82 GLuint service_id) { |
| 81 EXPECT_CALL(*gl_, GenQueries(1, _)) | 83 EXPECT_CALL(*gl_, GenQueries(1, _)) |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 // for GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT | 503 // for GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT |
| 502 TEST_F(QueryManagerTest, ARBOcclusionQuery2) { | 504 TEST_F(QueryManagerTest, ARBOcclusionQuery2) { |
| 503 const GLuint kClient1Id = 1; | 505 const GLuint kClient1Id = 1; |
| 504 const GLuint kService1Id = 11; | 506 const GLuint kService1Id = 11; |
| 505 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT; | 507 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT; |
| 506 const base::subtle::Atomic32 kSubmitCount = 123; | 508 const base::subtle::Atomic32 kSubmitCount = 123; |
| 507 | 509 |
| 508 TestHelper::SetupFeatureInfoInitExpectations( | 510 TestHelper::SetupFeatureInfoInitExpectations( |
| 509 gl_.get(), | 511 gl_.get(), |
| 510 "GL_ARB_occlusion_query2"); | 512 "GL_ARB_occlusion_query2"); |
| 511 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 513 scoped_refptr<FeatureInfo> feature_info( |
| 514 new FeatureInfo(gpu_driver_bug_workarounds_)); |
| 512 feature_info->InitializeForTesting(); | 515 feature_info->InitializeForTesting(); |
| 513 scoped_ptr<QueryManager> manager( | 516 scoped_ptr<QueryManager> manager( |
| 514 new QueryManager(decoder_.get(), feature_info.get())); | 517 new QueryManager(decoder_.get(), feature_info.get())); |
| 515 | 518 |
| 516 EXPECT_CALL(*gl_, GenQueries(1, _)) | 519 EXPECT_CALL(*gl_, GenQueries(1, _)) |
| 517 .WillOnce(SetArgumentPointee<1>(kService1Id)) | 520 .WillOnce(SetArgumentPointee<1>(kService1Id)) |
| 518 .RetiresOnSaturation(); | 521 .RetiresOnSaturation(); |
| 519 QueryManager::Query* query = manager->CreateQuery( | 522 QueryManager::Query* query = manager->CreateQuery( |
| 520 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 523 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 521 ASSERT_TRUE(query != NULL); | 524 ASSERT_TRUE(query != NULL); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 535 // for GL_ANY_SAMPLES_PASSED_EXT | 538 // for GL_ANY_SAMPLES_PASSED_EXT |
| 536 TEST_F(QueryManagerTest, ARBOcclusionQuery) { | 539 TEST_F(QueryManagerTest, ARBOcclusionQuery) { |
| 537 const GLuint kClient1Id = 1; | 540 const GLuint kClient1Id = 1; |
| 538 const GLuint kService1Id = 11; | 541 const GLuint kService1Id = 11; |
| 539 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; | 542 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; |
| 540 const base::subtle::Atomic32 kSubmitCount = 123; | 543 const base::subtle::Atomic32 kSubmitCount = 123; |
| 541 | 544 |
| 542 TestHelper::SetupFeatureInfoInitExpectations( | 545 TestHelper::SetupFeatureInfoInitExpectations( |
| 543 gl_.get(), | 546 gl_.get(), |
| 544 "GL_ARB_occlusion_query"); | 547 "GL_ARB_occlusion_query"); |
| 545 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 548 scoped_refptr<FeatureInfo> feature_info( |
| 549 new FeatureInfo(gpu_driver_bug_workarounds_)); |
| 546 feature_info->InitializeForTesting(); | 550 feature_info->InitializeForTesting(); |
| 547 scoped_ptr<QueryManager> manager( | 551 scoped_ptr<QueryManager> manager( |
| 548 new QueryManager(decoder_.get(), feature_info.get())); | 552 new QueryManager(decoder_.get(), feature_info.get())); |
| 549 | 553 |
| 550 EXPECT_CALL(*gl_, GenQueries(1, _)) | 554 EXPECT_CALL(*gl_, GenQueries(1, _)) |
| 551 .WillOnce(SetArgumentPointee<1>(kService1Id)) | 555 .WillOnce(SetArgumentPointee<1>(kService1Id)) |
| 552 .RetiresOnSaturation(); | 556 .RetiresOnSaturation(); |
| 553 QueryManager::Query* query = manager->CreateQuery( | 557 QueryManager::Query* query = manager->CreateQuery( |
| 554 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 558 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 555 ASSERT_TRUE(query != NULL); | 559 ASSERT_TRUE(query != NULL); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 568 TEST_F(QueryManagerTest, ARBOcclusionPauseResume) { | 572 TEST_F(QueryManagerTest, ARBOcclusionPauseResume) { |
| 569 const GLuint kClient1Id = 1; | 573 const GLuint kClient1Id = 1; |
| 570 const GLuint kService1Id = 11; | 574 const GLuint kService1Id = 11; |
| 571 const GLuint kService2Id = 12; | 575 const GLuint kService2Id = 12; |
| 572 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; | 576 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; |
| 573 const base::subtle::Atomic32 kSubmitCount = 123; | 577 const base::subtle::Atomic32 kSubmitCount = 123; |
| 574 | 578 |
| 575 TestHelper::SetupFeatureInfoInitExpectations( | 579 TestHelper::SetupFeatureInfoInitExpectations( |
| 576 gl_.get(), | 580 gl_.get(), |
| 577 "GL_ARB_occlusion_query"); | 581 "GL_ARB_occlusion_query"); |
| 578 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 582 scoped_refptr<FeatureInfo> feature_info( |
| 583 new FeatureInfo(gpu_driver_bug_workarounds_)); |
| 579 feature_info->InitializeForTesting(); | 584 feature_info->InitializeForTesting(); |
| 580 scoped_ptr<QueryManager> manager( | 585 scoped_ptr<QueryManager> manager( |
| 581 new QueryManager(decoder_.get(), feature_info.get())); | 586 new QueryManager(decoder_.get(), feature_info.get())); |
| 582 | 587 |
| 583 EXPECT_CALL(*gl_, GenQueries(1, _)) | 588 EXPECT_CALL(*gl_, GenQueries(1, _)) |
| 584 .WillOnce(SetArgumentPointee<1>(kService1Id)) | 589 .WillOnce(SetArgumentPointee<1>(kService1Id)) |
| 585 .RetiresOnSaturation(); | 590 .RetiresOnSaturation(); |
| 586 QueryManager::Query* query = manager->CreateQuery( | 591 QueryManager::Query* query = manager->CreateQuery( |
| 587 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 592 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 588 ASSERT_TRUE(query != NULL); | 593 ASSERT_TRUE(query != NULL); |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 911 | 916 |
| 912 manager_->Destroy(false); | 917 manager_->Destroy(false); |
| 913 } | 918 } |
| 914 | 919 |
| 915 TEST_F(QueryManagerTest, GetErrorQuery) { | 920 TEST_F(QueryManagerTest, GetErrorQuery) { |
| 916 const GLuint kClient1Id = 1; | 921 const GLuint kClient1Id = 1; |
| 917 const GLenum kTarget = GL_GET_ERROR_QUERY_CHROMIUM; | 922 const GLenum kTarget = GL_GET_ERROR_QUERY_CHROMIUM; |
| 918 const base::subtle::Atomic32 kSubmitCount = 123; | 923 const base::subtle::Atomic32 kSubmitCount = 123; |
| 919 | 924 |
| 920 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), ""); | 925 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), ""); |
| 921 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 926 scoped_refptr<FeatureInfo> feature_info( |
| 927 new FeatureInfo(gpu_driver_bug_workarounds_)); |
| 928 |
| 922 feature_info->InitializeForTesting(); | 929 feature_info->InitializeForTesting(); |
| 923 scoped_ptr<QueryManager> manager( | 930 scoped_ptr<QueryManager> manager( |
| 924 new QueryManager(decoder_.get(), feature_info.get())); | 931 new QueryManager(decoder_.get(), feature_info.get())); |
| 925 | 932 |
| 926 QueryManager::Query* query = manager->CreateQuery( | 933 QueryManager::Query* query = manager->CreateQuery( |
| 927 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 934 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 928 ASSERT_TRUE(query != NULL); | 935 ASSERT_TRUE(query != NULL); |
| 929 | 936 |
| 930 // Setup shared memory like client would. | 937 // Setup shared memory like client would. |
| 931 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( | 938 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( |
| (...skipping 15 matching lines...) Expand all Loading... |
| 947 | 954 |
| 948 EXPECT_EQ(static_cast<GLuint>(GL_INVALID_ENUM), sync->result); | 955 EXPECT_EQ(static_cast<GLuint>(GL_INVALID_ENUM), sync->result); |
| 949 | 956 |
| 950 manager->Destroy(false); | 957 manager->Destroy(false); |
| 951 } | 958 } |
| 952 | 959 |
| 953 } // namespace gles2 | 960 } // namespace gles2 |
| 954 } // namespace gpu | 961 } // namespace gpu |
| 955 | 962 |
| 956 | 963 |
| OLD | NEW |