| 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> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 10 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
| (...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 EXPECT_CALL(*gl_, DeleteQueries(1, ::testing::Pointee(kService1Id))) | 662 EXPECT_CALL(*gl_, DeleteQueries(1, ::testing::Pointee(kService1Id))) |
| 663 .Times(1) | 663 .Times(1) |
| 664 .RetiresOnSaturation(); | 664 .RetiresOnSaturation(); |
| 665 manager->Destroy(true); | 665 manager->Destroy(true); |
| 666 } | 666 } |
| 667 | 667 |
| 668 TEST_F(QueryManagerTest, TimeElapsedQuery) { | 668 TEST_F(QueryManagerTest, TimeElapsedQuery) { |
| 669 const GLuint kClient1Id = 1; | 669 const GLuint kClient1Id = 1; |
| 670 const GLenum kTarget = GL_TIME_ELAPSED_EXT; | 670 const GLenum kTarget = GL_TIME_ELAPSED_EXT; |
| 671 const base::subtle::Atomic32 kSubmitCount = 123; | 671 const base::subtle::Atomic32 kSubmitCount = 123; |
| 672 gfx::GPUTimingFake fake_timing_queries; | 672 gl::GPUTimingFake fake_timing_queries; |
| 673 decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( | 673 decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( |
| 674 base::Bind(&gfx::GPUTimingFake::GetFakeCPUTime)); | 674 base::Bind(&gl::GPUTimingFake::GetFakeCPUTime)); |
| 675 | 675 |
| 676 QueryManager::Query* query = manager_->CreateQuery( | 676 QueryManager::Query* query = manager_->CreateQuery( |
| 677 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 677 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 678 ASSERT_TRUE(query != NULL); | 678 ASSERT_TRUE(query != NULL); |
| 679 | 679 |
| 680 fake_timing_queries.ExpectGPUTimerQuery(*gl_, true); | 680 fake_timing_queries.ExpectGPUTimerQuery(*gl_, true); |
| 681 fake_timing_queries.SetCurrentGLTime( | 681 fake_timing_queries.SetCurrentGLTime( |
| 682 200 * base::Time::kNanosecondsPerMicrosecond); | 682 200 * base::Time::kNanosecondsPerMicrosecond); |
| 683 EXPECT_TRUE(manager_->BeginQuery(query)); | 683 EXPECT_TRUE(manager_->BeginQuery(query)); |
| 684 fake_timing_queries.SetCurrentGLTime( | 684 fake_timing_queries.SetCurrentGLTime( |
| 685 300 * base::Time::kNanosecondsPerMicrosecond); | 685 300 * base::Time::kNanosecondsPerMicrosecond); |
| 686 EXPECT_TRUE(manager_->EndQuery(query, kSubmitCount)); | 686 EXPECT_TRUE(manager_->EndQuery(query, kSubmitCount)); |
| 687 EXPECT_TRUE(manager_->ProcessPendingQueries(false)); | 687 EXPECT_TRUE(manager_->ProcessPendingQueries(false)); |
| 688 | 688 |
| 689 EXPECT_TRUE(query->IsFinished()); | 689 EXPECT_TRUE(query->IsFinished()); |
| 690 | 690 |
| 691 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( | 691 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( |
| 692 kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync)); | 692 kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync)); |
| 693 const uint64_t expected_result = | 693 const uint64_t expected_result = |
| 694 100u * base::Time::kNanosecondsPerMicrosecond; | 694 100u * base::Time::kNanosecondsPerMicrosecond; |
| 695 EXPECT_EQ(expected_result, sync->result); | 695 EXPECT_EQ(expected_result, sync->result); |
| 696 | 696 |
| 697 manager_->Destroy(false); | 697 manager_->Destroy(false); |
| 698 } | 698 } |
| 699 | 699 |
| 700 TEST_F(QueryManagerTest, TimeElapsedPauseResume) { | 700 TEST_F(QueryManagerTest, TimeElapsedPauseResume) { |
| 701 const GLuint kClient1Id = 1; | 701 const GLuint kClient1Id = 1; |
| 702 const GLenum kTarget = GL_TIME_ELAPSED_EXT; | 702 const GLenum kTarget = GL_TIME_ELAPSED_EXT; |
| 703 const base::subtle::Atomic32 kSubmitCount = 123; | 703 const base::subtle::Atomic32 kSubmitCount = 123; |
| 704 gfx::GPUTimingFake fake_timing_queries; | 704 gl::GPUTimingFake fake_timing_queries; |
| 705 decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( | 705 decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( |
| 706 base::Bind(&gfx::GPUTimingFake::GetFakeCPUTime)); | 706 base::Bind(&gl::GPUTimingFake::GetFakeCPUTime)); |
| 707 | 707 |
| 708 QueryManager::Query* query = manager_->CreateQuery( | 708 QueryManager::Query* query = manager_->CreateQuery( |
| 709 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 709 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 710 ASSERT_TRUE(query != NULL); | 710 ASSERT_TRUE(query != NULL); |
| 711 | 711 |
| 712 fake_timing_queries.ExpectGPUTimerQuery(*gl_, true); | 712 fake_timing_queries.ExpectGPUTimerQuery(*gl_, true); |
| 713 fake_timing_queries.SetCurrentGLTime( | 713 fake_timing_queries.SetCurrentGLTime( |
| 714 200 * base::Time::kNanosecondsPerMicrosecond); | 714 200 * base::Time::kNanosecondsPerMicrosecond); |
| 715 EXPECT_TRUE(manager_->BeginQuery(query)); | 715 EXPECT_TRUE(manager_->BeginQuery(query)); |
| 716 | 716 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 750 const uint64_t expected_result2 = | 750 const uint64_t expected_result2 = |
| 751 100u * base::Time::kNanosecondsPerMicrosecond; | 751 100u * base::Time::kNanosecondsPerMicrosecond; |
| 752 EXPECT_EQ(expected_result2, sync->result); | 752 EXPECT_EQ(expected_result2, sync->result); |
| 753 | 753 |
| 754 manager_->Destroy(false); | 754 manager_->Destroy(false); |
| 755 } | 755 } |
| 756 | 756 |
| 757 TEST_F(QueryManagerManualSetupTest, TimeElapsedDisjoint) { | 757 TEST_F(QueryManagerManualSetupTest, TimeElapsedDisjoint) { |
| 758 GpuServiceTest::SetUpWithGLVersion("OpenGL ES 3.0", | 758 GpuServiceTest::SetUpWithGLVersion("OpenGL ES 3.0", |
| 759 "GL_EXT_disjoint_timer_query"); | 759 "GL_EXT_disjoint_timer_query"); |
| 760 gfx::GPUTimingFake fake_timing_queries; | 760 gl::GPUTimingFake fake_timing_queries; |
| 761 fake_timing_queries.ExpectDisjointCalls(*gl_); | 761 fake_timing_queries.ExpectDisjointCalls(*gl_); |
| 762 SetUpMockGL("GL_EXT_disjoint_timer_query"); | 762 SetUpMockGL("GL_EXT_disjoint_timer_query"); |
| 763 | 763 |
| 764 DisjointValueSync* disjoint_sync = | 764 DisjointValueSync* disjoint_sync = |
| 765 decoder_->GetSharedMemoryAs<DisjointValueSync*>(kSharedMemory2Id, | 765 decoder_->GetSharedMemoryAs<DisjointValueSync*>(kSharedMemory2Id, |
| 766 kSharedMemory2Offset, | 766 kSharedMemory2Offset, |
| 767 sizeof(*disjoint_sync)); | 767 sizeof(*disjoint_sync)); |
| 768 manager_->SetDisjointSync(kSharedMemory2Id, kSharedMemory2Offset); | 768 manager_->SetDisjointSync(kSharedMemory2Id, kSharedMemory2Offset); |
| 769 | 769 |
| 770 const uint32_t current_disjoint_value = disjoint_sync->GetDisjointCount(); | 770 const uint32_t current_disjoint_value = disjoint_sync->GetDisjointCount(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 799 EXPECT_TRUE(query->IsFinished()); | 799 EXPECT_TRUE(query->IsFinished()); |
| 800 EXPECT_NE(current_disjoint_value, disjoint_sync->GetDisjointCount()); | 800 EXPECT_NE(current_disjoint_value, disjoint_sync->GetDisjointCount()); |
| 801 | 801 |
| 802 manager_->Destroy(false); | 802 manager_->Destroy(false); |
| 803 } | 803 } |
| 804 | 804 |
| 805 TEST_F(QueryManagerTest, TimeStampQuery) { | 805 TEST_F(QueryManagerTest, TimeStampQuery) { |
| 806 const GLuint kClient1Id = 1; | 806 const GLuint kClient1Id = 1; |
| 807 const GLenum kTarget = GL_TIMESTAMP_EXT; | 807 const GLenum kTarget = GL_TIMESTAMP_EXT; |
| 808 const base::subtle::Atomic32 kSubmitCount = 123; | 808 const base::subtle::Atomic32 kSubmitCount = 123; |
| 809 gfx::GPUTimingFake fake_timing_queries; | 809 gl::GPUTimingFake fake_timing_queries; |
| 810 | 810 |
| 811 decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( | 811 decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( |
| 812 base::Bind(&gfx::GPUTimingFake::GetFakeCPUTime)); | 812 base::Bind(&gl::GPUTimingFake::GetFakeCPUTime)); |
| 813 | 813 |
| 814 QueryManager::Query* query = manager_->CreateQuery( | 814 QueryManager::Query* query = manager_->CreateQuery( |
| 815 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); | 815 kTarget, kClient1Id, kSharedMemoryId, kSharedMemoryOffset); |
| 816 ASSERT_TRUE(query != NULL); | 816 ASSERT_TRUE(query != NULL); |
| 817 | 817 |
| 818 const uint64_t expected_result = | 818 const uint64_t expected_result = |
| 819 100u * base::Time::kNanosecondsPerMicrosecond; | 819 100u * base::Time::kNanosecondsPerMicrosecond; |
| 820 fake_timing_queries.SetCurrentGLTime(expected_result); | 820 fake_timing_queries.SetCurrentGLTime(expected_result); |
| 821 fake_timing_queries.ExpectGPUTimeStampQuery(*gl_, false); | 821 fake_timing_queries.ExpectGPUTimeStampQuery(*gl_, false); |
| 822 EXPECT_TRUE(manager_->QueryCounter(query, kSubmitCount)); | 822 EXPECT_TRUE(manager_->QueryCounter(query, kSubmitCount)); |
| 823 EXPECT_TRUE(manager_->ProcessPendingQueries(false)); | 823 EXPECT_TRUE(manager_->ProcessPendingQueries(false)); |
| 824 | 824 |
| 825 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( | 825 QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>( |
| 826 kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync)); | 826 kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync)); |
| 827 EXPECT_EQ(expected_result, sync->result); | 827 EXPECT_EQ(expected_result, sync->result); |
| 828 | 828 |
| 829 manager_->Destroy(false); | 829 manager_->Destroy(false); |
| 830 } | 830 } |
| 831 | 831 |
| 832 TEST_F(QueryManagerManualSetupTest, TimeStampDisjoint) { | 832 TEST_F(QueryManagerManualSetupTest, TimeStampDisjoint) { |
| 833 GpuServiceTest::SetUpWithGLVersion("OpenGL ES 3.0", | 833 GpuServiceTest::SetUpWithGLVersion("OpenGL ES 3.0", |
| 834 "GL_EXT_disjoint_timer_query"); | 834 "GL_EXT_disjoint_timer_query"); |
| 835 gfx::GPUTimingFake fake_timing_queries; | 835 gl::GPUTimingFake fake_timing_queries; |
| 836 fake_timing_queries.ExpectDisjointCalls(*gl_); | 836 fake_timing_queries.ExpectDisjointCalls(*gl_); |
| 837 SetUpMockGL("GL_EXT_disjoint_timer_query"); | 837 SetUpMockGL("GL_EXT_disjoint_timer_query"); |
| 838 | 838 |
| 839 DisjointValueSync* disjoint_sync = | 839 DisjointValueSync* disjoint_sync = |
| 840 decoder_->GetSharedMemoryAs<DisjointValueSync*>(kSharedMemory2Id, | 840 decoder_->GetSharedMemoryAs<DisjointValueSync*>(kSharedMemory2Id, |
| 841 kSharedMemory2Offset, | 841 kSharedMemory2Offset, |
| 842 sizeof(*disjoint_sync)); | 842 sizeof(*disjoint_sync)); |
| 843 manager_->SetDisjointSync(kSharedMemory2Id, kSharedMemory2Offset); | 843 manager_->SetDisjointSync(kSharedMemory2Id, kSharedMemory2Offset); |
| 844 | 844 |
| 845 const uint32_t current_disjoint_value = disjoint_sync->GetDisjointCount(); | 845 const uint32_t current_disjoint_value = disjoint_sync->GetDisjointCount(); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 871 | 871 |
| 872 EXPECT_TRUE(query->IsFinished()); | 872 EXPECT_TRUE(query->IsFinished()); |
| 873 EXPECT_NE(current_disjoint_value, disjoint_sync->GetDisjointCount()); | 873 EXPECT_NE(current_disjoint_value, disjoint_sync->GetDisjointCount()); |
| 874 | 874 |
| 875 manager_->Destroy(false); | 875 manager_->Destroy(false); |
| 876 } | 876 } |
| 877 | 877 |
| 878 TEST_F(QueryManagerManualSetupTest, DisjointContinualTest) { | 878 TEST_F(QueryManagerManualSetupTest, DisjointContinualTest) { |
| 879 GpuServiceTest::SetUpWithGLVersion("OpenGL ES 3.0", | 879 GpuServiceTest::SetUpWithGLVersion("OpenGL ES 3.0", |
| 880 "GL_EXT_disjoint_timer_query"); | 880 "GL_EXT_disjoint_timer_query"); |
| 881 gfx::GPUTimingFake fake_timing_queries; | 881 gl::GPUTimingFake fake_timing_queries; |
| 882 fake_timing_queries.ExpectDisjointCalls(*gl_); | 882 fake_timing_queries.ExpectDisjointCalls(*gl_); |
| 883 SetUpMockGL("GL_EXT_disjoint_timer_query"); | 883 SetUpMockGL("GL_EXT_disjoint_timer_query"); |
| 884 | 884 |
| 885 DisjointValueSync* disjoint_sync = | 885 DisjointValueSync* disjoint_sync = |
| 886 decoder_->GetSharedMemoryAs<DisjointValueSync*>(kSharedMemory2Id, | 886 decoder_->GetSharedMemoryAs<DisjointValueSync*>(kSharedMemory2Id, |
| 887 kSharedMemory2Offset, | 887 kSharedMemory2Offset, |
| 888 sizeof(*disjoint_sync)); | 888 sizeof(*disjoint_sync)); |
| 889 manager_->SetDisjointSync(kSharedMemory2Id, kSharedMemory2Offset); | 889 manager_->SetDisjointSync(kSharedMemory2Id, kSharedMemory2Offset); |
| 890 | 890 |
| 891 const uint32_t current_disjoint_value = disjoint_sync->GetDisjointCount(); | 891 const uint32_t current_disjoint_value = disjoint_sync->GetDisjointCount(); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 951 | 951 |
| 952 EXPECT_EQ(static_cast<GLuint>(GL_INVALID_ENUM), sync->result); | 952 EXPECT_EQ(static_cast<GLuint>(GL_INVALID_ENUM), sync->result); |
| 953 | 953 |
| 954 manager->Destroy(false); | 954 manager->Destroy(false); |
| 955 } | 955 } |
| 956 | 956 |
| 957 } // namespace gles2 | 957 } // namespace gles2 |
| 958 } // namespace gpu | 958 } // namespace gpu |
| 959 | 959 |
| 960 | 960 |
| OLD | NEW |