Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(522)

Side by Side Diff: gpu/command_buffer/service/query_manager_unittest.cc

Issue 1871613002: Compute GpuDriverBugWorkarounds only one time in the GPU process (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698