| 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 <memory> |
| 9 |
| 8 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 10 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
| 9 #include "gpu/command_buffer/service/cmd_buffer_engine.h" | 11 #include "gpu/command_buffer/service/cmd_buffer_engine.h" |
| 10 #include "gpu/command_buffer/service/error_state_mock.h" | 12 #include "gpu/command_buffer/service/error_state_mock.h" |
| 11 #include "gpu/command_buffer/service/feature_info.h" | 13 #include "gpu/command_buffer/service/feature_info.h" |
| 12 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 14 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
| 13 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" | 15 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" |
| 14 #include "gpu/command_buffer/service/gpu_service_test.h" | 16 #include "gpu/command_buffer/service/gpu_service_test.h" |
| 15 #include "gpu/command_buffer/service/query_manager.h" | 17 #include "gpu/command_buffer/service/query_manager.h" |
| 16 #include "gpu/command_buffer/service/test_helper.h" | 18 #include "gpu/command_buffer/service/test_helper.h" |
| 17 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 EXPECT_CALL(*gl_, BeginQuery(query->target(), service_id)) | 92 EXPECT_CALL(*gl_, BeginQuery(query->target(), service_id)) |
| 91 .Times(1) | 93 .Times(1) |
| 92 .RetiresOnSaturation(); | 94 .RetiresOnSaturation(); |
| 93 EXPECT_CALL(*gl_, EndQuery(query->target())) | 95 EXPECT_CALL(*gl_, EndQuery(query->target())) |
| 94 .Times(1) | 96 .Times(1) |
| 95 .RetiresOnSaturation(); | 97 .RetiresOnSaturation(); |
| 96 EXPECT_TRUE(manager_->BeginQuery(query)); | 98 EXPECT_TRUE(manager_->BeginQuery(query)); |
| 97 EXPECT_TRUE(manager_->EndQuery(query, submit_count)); | 99 EXPECT_TRUE(manager_->EndQuery(query, submit_count)); |
| 98 } | 100 } |
| 99 | 101 |
| 100 scoped_ptr<MockGLES2Decoder> decoder_; | 102 std::unique_ptr<MockGLES2Decoder> decoder_; |
| 101 scoped_ptr<QueryManager> manager_; | 103 std::unique_ptr<QueryManager> manager_; |
| 102 | 104 |
| 103 private: | 105 private: |
| 104 class MockCommandBufferEngine : public CommandBufferEngine { | 106 class MockCommandBufferEngine : public CommandBufferEngine { |
| 105 public: | 107 public: |
| 106 MockCommandBufferEngine() { | 108 MockCommandBufferEngine() { |
| 107 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory()); | 109 std::unique_ptr<base::SharedMemory> shared_memory( |
| 110 new base::SharedMemory()); |
| 108 shared_memory->CreateAndMapAnonymous(kSharedBufferSize); | 111 shared_memory->CreateAndMapAnonymous(kSharedBufferSize); |
| 109 valid_buffer_ = MakeBufferFromSharedMemory(std::move(shared_memory), | 112 valid_buffer_ = MakeBufferFromSharedMemory(std::move(shared_memory), |
| 110 kSharedBufferSize); | 113 kSharedBufferSize); |
| 111 | 114 |
| 112 scoped_ptr<base::SharedMemory> shared_memory2(new base::SharedMemory()); | 115 std::unique_ptr<base::SharedMemory> shared_memory2( |
| 116 new base::SharedMemory()); |
| 113 shared_memory2->CreateAndMapAnonymous(kSharedBufferSize); | 117 shared_memory2->CreateAndMapAnonymous(kSharedBufferSize); |
| 114 valid_buffer2_ = MakeBufferFromSharedMemory(std::move(shared_memory2), | 118 valid_buffer2_ = MakeBufferFromSharedMemory(std::move(shared_memory2), |
| 115 kSharedBufferSize); | 119 kSharedBufferSize); |
| 116 | 120 |
| 117 ClearSharedMemory(); | 121 ClearSharedMemory(); |
| 118 } | 122 } |
| 119 | 123 |
| 120 ~MockCommandBufferEngine() override {} | 124 ~MockCommandBufferEngine() override {} |
| 121 | 125 |
| 122 scoped_refptr<gpu::Buffer> GetSharedMemoryBuffer(int32_t shm_id) override { | 126 scoped_refptr<gpu::Buffer> GetSharedMemoryBuffer(int32_t shm_id) override { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 150 DCHECK(false); | 154 DCHECK(false); |
| 151 return 0; | 155 return 0; |
| 152 } | 156 } |
| 153 | 157 |
| 154 private: | 158 private: |
| 155 scoped_refptr<gpu::Buffer> valid_buffer_; | 159 scoped_refptr<gpu::Buffer> valid_buffer_; |
| 156 scoped_refptr<gpu::Buffer> valid_buffer2_; | 160 scoped_refptr<gpu::Buffer> valid_buffer2_; |
| 157 scoped_refptr<gpu::Buffer> invalid_buffer_; | 161 scoped_refptr<gpu::Buffer> invalid_buffer_; |
| 158 }; | 162 }; |
| 159 | 163 |
| 160 scoped_ptr<MockCommandBufferEngine> engine_; | 164 std::unique_ptr<MockCommandBufferEngine> engine_; |
| 161 }; | 165 }; |
| 162 | 166 |
| 163 class QueryManagerManualSetupTest : public QueryManagerTest { | 167 class QueryManagerManualSetupTest : public QueryManagerTest { |
| 164 protected: | 168 protected: |
| 165 void SetUp() override { | 169 void SetUp() override { |
| 166 // Let test setup manually. | 170 // Let test setup manually. |
| 167 } | 171 } |
| 168 }; | 172 }; |
| 169 | 173 |
| 170 // GCC requires these declarations, but MSVC requires they not be present | 174 // GCC requires these declarations, but MSVC requires they not be present |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 503 const GLuint kClient1Id = 1; | 507 const GLuint kClient1Id = 1; |
| 504 const GLuint kService1Id = 11; | 508 const GLuint kService1Id = 11; |
| 505 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT; | 509 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT; |
| 506 const base::subtle::Atomic32 kSubmitCount = 123; | 510 const base::subtle::Atomic32 kSubmitCount = 123; |
| 507 | 511 |
| 508 TestHelper::SetupFeatureInfoInitExpectations( | 512 TestHelper::SetupFeatureInfoInitExpectations( |
| 509 gl_.get(), | 513 gl_.get(), |
| 510 "GL_ARB_occlusion_query2"); | 514 "GL_ARB_occlusion_query2"); |
| 511 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 515 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 512 feature_info->InitializeForTesting(); | 516 feature_info->InitializeForTesting(); |
| 513 scoped_ptr<QueryManager> manager( | 517 std::unique_ptr<QueryManager> manager( |
| 514 new QueryManager(decoder_.get(), feature_info.get())); | 518 new QueryManager(decoder_.get(), feature_info.get())); |
| 515 | 519 |
| 516 EXPECT_CALL(*gl_, GenQueries(1, _)) | 520 EXPECT_CALL(*gl_, GenQueries(1, _)) |
| 517 .WillOnce(SetArgumentPointee<1>(kService1Id)) | 521 .WillOnce(SetArgumentPointee<1>(kService1Id)) |
| 518 .RetiresOnSaturation(); | 522 .RetiresOnSaturation(); |
| 519 QueryManager::Query* query = manager->CreateQuery( | 523 QueryManager::Query* query = manager->CreateQuery( |
| 520 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 524 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 521 ASSERT_TRUE(query != NULL); | 525 ASSERT_TRUE(query != NULL); |
| 522 | 526 |
| 523 EXPECT_CALL(*gl_, BeginQuery(GL_ANY_SAMPLES_PASSED_EXT, kService1Id)) | 527 EXPECT_CALL(*gl_, BeginQuery(GL_ANY_SAMPLES_PASSED_EXT, kService1Id)) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 537 const GLuint kClient1Id = 1; | 541 const GLuint kClient1Id = 1; |
| 538 const GLuint kService1Id = 11; | 542 const GLuint kService1Id = 11; |
| 539 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; | 543 const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT; |
| 540 const base::subtle::Atomic32 kSubmitCount = 123; | 544 const base::subtle::Atomic32 kSubmitCount = 123; |
| 541 | 545 |
| 542 TestHelper::SetupFeatureInfoInitExpectations( | 546 TestHelper::SetupFeatureInfoInitExpectations( |
| 543 gl_.get(), | 547 gl_.get(), |
| 544 "GL_ARB_occlusion_query"); | 548 "GL_ARB_occlusion_query"); |
| 545 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 549 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 546 feature_info->InitializeForTesting(); | 550 feature_info->InitializeForTesting(); |
| 547 scoped_ptr<QueryManager> manager( | 551 std::unique_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); |
| 556 | 560 |
| 557 EXPECT_CALL(*gl_, BeginQuery(GL_SAMPLES_PASSED_ARB, kService1Id)) | 561 EXPECT_CALL(*gl_, BeginQuery(GL_SAMPLES_PASSED_ARB, kService1Id)) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 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(new FeatureInfo()); |
| 579 feature_info->InitializeForTesting(); | 583 feature_info->InitializeForTesting(); |
| 580 scoped_ptr<QueryManager> manager( | 584 std::unique_ptr<QueryManager> manager( |
| 581 new QueryManager(decoder_.get(), feature_info.get())); | 585 new QueryManager(decoder_.get(), feature_info.get())); |
| 582 | 586 |
| 583 EXPECT_CALL(*gl_, GenQueries(1, _)) | 587 EXPECT_CALL(*gl_, GenQueries(1, _)) |
| 584 .WillOnce(SetArgumentPointee<1>(kService1Id)) | 588 .WillOnce(SetArgumentPointee<1>(kService1Id)) |
| 585 .RetiresOnSaturation(); | 589 .RetiresOnSaturation(); |
| 586 QueryManager::Query* query = manager->CreateQuery( | 590 QueryManager::Query* query = manager->CreateQuery( |
| 587 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 591 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 588 ASSERT_TRUE(query != NULL); | 592 ASSERT_TRUE(query != NULL); |
| 589 | 593 |
| 590 EXPECT_CALL(*gl_, BeginQuery(GL_SAMPLES_PASSED_ARB, kService1Id)) | 594 EXPECT_CALL(*gl_, BeginQuery(GL_SAMPLES_PASSED_ARB, kService1Id)) |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 913 } | 917 } |
| 914 | 918 |
| 915 TEST_F(QueryManagerTest, GetErrorQuery) { | 919 TEST_F(QueryManagerTest, GetErrorQuery) { |
| 916 const GLuint kClient1Id = 1; | 920 const GLuint kClient1Id = 1; |
| 917 const GLenum kTarget = GL_GET_ERROR_QUERY_CHROMIUM; | 921 const GLenum kTarget = GL_GET_ERROR_QUERY_CHROMIUM; |
| 918 const base::subtle::Atomic32 kSubmitCount = 123; | 922 const base::subtle::Atomic32 kSubmitCount = 123; |
| 919 | 923 |
| 920 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), ""); | 924 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), ""); |
| 921 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 925 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 922 feature_info->InitializeForTesting(); | 926 feature_info->InitializeForTesting(); |
| 923 scoped_ptr<QueryManager> manager( | 927 std::unique_ptr<QueryManager> manager( |
| 924 new QueryManager(decoder_.get(), feature_info.get())); | 928 new QueryManager(decoder_.get(), feature_info.get())); |
| 925 | 929 |
| 926 QueryManager::Query* query = manager->CreateQuery( | 930 QueryManager::Query* query = manager->CreateQuery( |
| 927 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 931 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 928 ASSERT_TRUE(query != NULL); | 932 ASSERT_TRUE(query != NULL); |
| 929 | 933 |
| 930 // Setup shared memory like client would. | 934 // Setup shared memory like client would. |
| 931 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( | 935 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( |
| 932 kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync)); | 936 kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync)); |
| 933 ASSERT_TRUE(sync != NULL); | 937 ASSERT_TRUE(sync != NULL); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 947 | 951 |
| 948 EXPECT_EQ(static_cast<GLuint>(GL_INVALID_ENUM), sync->result); | 952 EXPECT_EQ(static_cast<GLuint>(GL_INVALID_ENUM), sync->result); |
| 949 | 953 |
| 950 manager->Destroy(false); | 954 manager->Destroy(false); |
| 951 } | 955 } |
| 952 | 956 |
| 953 } // namespace gles2 | 957 } // namespace gles2 |
| 954 } // namespace gpu | 958 } // namespace gpu |
| 955 | 959 |
| 956 | 960 |
| OLD | NEW |