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 |