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

Unified Diff: gpu/command_buffer/service/query_manager_unittest.cc

Issue 9694025: Add support for GL_COMMANDS_ISSUED_CHROMIUM fence like query. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/query_manager_unittest.cc
diff --git a/gpu/command_buffer/service/query_manager_unittest.cc b/gpu/command_buffer/service/query_manager_unittest.cc
index e2307686ded4135b8af5c920b1260d1df3052f34..b9943bf56538f3b37a320f1385c712b7076a5e36 100644
--- a/gpu/command_buffer/service/query_manager_unittest.cc
+++ b/gpu/command_buffer/service/query_manager_unittest.cc
@@ -48,7 +48,7 @@ class QueryManagerTest : public testing::Test {
engine_.reset(new MockCommandBufferEngine());
decoder_.reset(new MockDecoder());
decoder_->set_engine(engine_.get());
- manager_.reset(new QueryManager());
+ manager_.reset(new QueryManager(decoder_.get()));
}
virtual void TearDown() {
@@ -60,6 +60,27 @@ class QueryManagerTest : public testing::Test {
gl_.reset();
}
+ QueryManager::Query* CreateQuery(
+ GLenum target, GLuint client_id, int32 shm_id, uint32 shm_offset,
+ GLuint service_id) {
+ EXPECT_CALL(*gl_, GenQueriesARB(1, _))
+ .WillOnce(SetArgumentPointee<1>(service_id))
+ .RetiresOnSaturation();
+ return manager_->CreateQuery(target, client_id, shm_id, shm_offset);
+ }
+
+ void QueueQuery(
+ QueryManager::Query* query, GLuint service_id, uint32 submit_count) {
+ EXPECT_CALL(*gl_, BeginQueryARB(query->target(), service_id))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, EndQueryARB(query->target()))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_TRUE(manager_->BeginQuery(query));
+ EXPECT_TRUE(manager_->EndQuery(query, submit_count));
+ }
+
// Use StrictMock to make 100% sure we know how GL will be called.
scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
scoped_ptr<MockDecoder> decoder_;
@@ -134,14 +155,11 @@ TEST_F(QueryManagerTest, Basic) {
// Check we can create a Query.
QueryManager::Query::Ref query(
- manager_->CreateQuery(kClient1Id, kService1Id));
+ CreateQuery(GL_ANY_SAMPLES_PASSED_EXT, kClient1Id,
+ kSharedMemoryId, kSharedMemoryOffset, kService1Id));
ASSERT_TRUE(query.get() != NULL);
// Check we can get the same Query.
EXPECT_EQ(query.get(), manager_->GetQuery(kClient1Id));
- // Check we can get the client id.
- GLuint client_id = -1;
- EXPECT_TRUE(manager_->GetClientId(kService1Id, &client_id));
- EXPECT_EQ(kClient1Id, client_id);
// Check we get nothing for a non-existent query.
EXPECT_TRUE(manager_->GetQuery(kClient2Id) == NULL);
// Check we can delete the query.
@@ -158,7 +176,8 @@ TEST_F(QueryManagerTest, Destroy) {
// Create Query.
QueryManager::Query::Ref query(
- manager_->CreateQuery(kClient1Id, kService1Id));
+ CreateQuery(GL_ANY_SAMPLES_PASSED_EXT, kClient1Id,
+ kSharedMemoryId, kSharedMemoryOffset, kService1Id));
ASSERT_TRUE(query.get() != NULL);
EXPECT_CALL(*gl_, DeleteQueriesARB(1, ::testing::Pointee(kService1Id)))
.Times(1)
@@ -173,37 +192,20 @@ TEST_F(QueryManagerTest, Destroy) {
TEST_F(QueryManagerTest, QueryBasic) {
const GLuint kClient1Id = 1;
const GLuint kService1Id = 11;
+ const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT;
// Create Query.
QueryManager::Query::Ref query(
- manager_->CreateQuery(kClient1Id, kService1Id));
+ CreateQuery(kTarget, kClient1Id,
+ kSharedMemoryId, kSharedMemoryOffset, kService1Id));
ASSERT_TRUE(query.get() != NULL);
- EXPECT_FALSE(query->IsValid());
+ EXPECT_TRUE(query->IsValid());
EXPECT_FALSE(query->IsDeleted());
- EXPECT_FALSE(query->IsInitialized());
EXPECT_FALSE(query->pending());
-}
-
-TEST_F(QueryManagerTest, QueryInitialize) {
- const GLuint kClient1Id = 1;
- const GLuint kService1Id = 11;
- const GLenum kTarget = GL_ANY_SAMPLES_PASSED_EXT;
-
- // Create Query.
- QueryManager::Query::Ref query(
- manager_->CreateQuery(kClient1Id, kService1Id));
- ASSERT_TRUE(query.get() != NULL);
-
- query->Initialize(kTarget, kSharedMemoryId, kSharedMemoryOffset);
EXPECT_EQ(kTarget, query->target());
EXPECT_EQ(kSharedMemoryId, query->shm_id());
EXPECT_EQ(kSharedMemoryOffset, query->shm_offset());
-
- EXPECT_TRUE(query->IsValid());
- EXPECT_FALSE(query->IsDeleted());
- EXPECT_TRUE(query->IsInitialized());
- EXPECT_FALSE(query->pending());
}
TEST_F(QueryManagerTest, ProcessPendingQuery) {
@@ -214,13 +216,13 @@ TEST_F(QueryManagerTest, ProcessPendingQuery) {
const GLuint kResult = 456;
// Check nothing happens if there are no pending queries.
- EXPECT_TRUE(manager_->ProcessPendingQueries(decoder_.get()));
+ EXPECT_TRUE(manager_->ProcessPendingQueries());
// Create Query.
QueryManager::Query::Ref query(
- manager_->CreateQuery(kClient1Id, kService1Id));
+ CreateQuery(kTarget, kClient1Id,
+ kSharedMemoryId, kSharedMemoryOffset, kService1Id));
ASSERT_TRUE(query.get() != NULL);
- query->Initialize(kTarget, kSharedMemoryId, kSharedMemoryOffset);
// Setup shared memory like client would.
QuerySync* sync = decoder_->GetSharedMemoryAs<QuerySync*>(
@@ -229,7 +231,7 @@ TEST_F(QueryManagerTest, ProcessPendingQuery) {
sync->Reset();
// Queue it
- manager_->AddPendingQuery(query.get(), kSubmitCount);
+ QueueQuery(query.get(), kService1Id, kSubmitCount);
EXPECT_TRUE(query->pending());
// Process with return not available.
@@ -238,7 +240,7 @@ TEST_F(QueryManagerTest, ProcessPendingQuery) {
GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_AVAILABLE_EXT, _))
.WillOnce(SetArgumentPointee<2>(0))
.RetiresOnSaturation();
- EXPECT_TRUE(manager_->ProcessPendingQueries(decoder_.get()));
+ EXPECT_TRUE(manager_->ProcessPendingQueries());
EXPECT_TRUE(query->pending());
EXPECT_EQ(0u, sync->process_count);
EXPECT_EQ(0u, sync->result);
@@ -253,14 +255,14 @@ TEST_F(QueryManagerTest, ProcessPendingQuery) {
GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_EXT, _))
.WillOnce(SetArgumentPointee<2>(kResult))
.RetiresOnSaturation();
- EXPECT_TRUE(manager_->ProcessPendingQueries(decoder_.get()));
+ EXPECT_TRUE(manager_->ProcessPendingQueries());
EXPECT_FALSE(query->pending());
EXPECT_EQ(kSubmitCount, sync->process_count);
EXPECT_EQ(kResult, sync->result);
// Process with no queries.
// Expect no GL commands/
- EXPECT_TRUE(manager_->ProcessPendingQueries(decoder_.get()));
+ EXPECT_TRUE(manager_->ProcessPendingQueries());
}
TEST_F(QueryManagerTest, ProcessPendingQueries) {
@@ -278,38 +280,38 @@ TEST_F(QueryManagerTest, ProcessPendingQueries) {
const GLuint kResult2 = 457;
const GLuint kResult3 = 458;
+ // Setup shared memory like client would.
+ QuerySync* sync1 = decoder_->GetSharedMemoryAs<QuerySync*>(
+ kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync1) * 3);
+ ASSERT_TRUE(sync1 != NULL);
+ QuerySync* sync2 = sync1 + 1;
+ QuerySync* sync3 = sync2 + 1;
+
// Create Queries.
QueryManager::Query::Ref query1(
- manager_->CreateQuery(kClient1Id, kService1Id));
+ CreateQuery(kTarget, kClient1Id,
+ kSharedMemoryId, kSharedMemoryOffset + sizeof(*sync1) * 0,
+ kService1Id));
QueryManager::Query::Ref query2(
- manager_->CreateQuery(kClient2Id, kService2Id));
+ CreateQuery(kTarget, kClient2Id,
+ kSharedMemoryId, kSharedMemoryOffset + sizeof(*sync1) * 1,
+ kService2Id));
QueryManager::Query::Ref query3(
- manager_->CreateQuery(kClient3Id, kService3Id));
+ CreateQuery(kTarget, kClient3Id,
+ kSharedMemoryId, kSharedMemoryOffset + sizeof(*sync1) * 2,
+ kService3Id));
ASSERT_TRUE(query1.get() != NULL);
ASSERT_TRUE(query2.get() != NULL);
ASSERT_TRUE(query3.get() != NULL);
- // Setup shared memory like client would.
- QuerySync* sync1 = decoder_->GetSharedMemoryAs<QuerySync*>(
- kSharedMemoryId, kSharedMemoryOffset, sizeof(*sync1) * 3);
- ASSERT_TRUE(sync1 != NULL);
- QuerySync* sync2 = sync1 + 1;
- QuerySync* sync3 = sync2 + 1;
-
sync1->Reset();
sync2->Reset();
sync3->Reset();
- query1->Initialize(kTarget, kSharedMemoryId, kSharedMemoryOffset);
- query2->Initialize(kTarget, kSharedMemoryId,
- kSharedMemoryOffset + sizeof(*sync1));
- query3->Initialize(kTarget, kSharedMemoryId,
- kSharedMemoryOffset + sizeof(*sync1) * 2);
-
// Queue them
- manager_->AddPendingQuery(query1.get(), kSubmitCount1);
- manager_->AddPendingQuery(query2.get(), kSubmitCount2);
- manager_->AddPendingQuery(query3.get(), kSubmitCount3);
+ QueueQuery(query1.get(), kService1Id, kSubmitCount1);
+ QueueQuery(query2.get(), kService2Id, kSubmitCount2);
+ QueueQuery(query3.get(), kService3Id, kSubmitCount3);
EXPECT_TRUE(query1->pending());
EXPECT_TRUE(query2->pending());
EXPECT_TRUE(query3->pending());
@@ -338,7 +340,7 @@ TEST_F(QueryManagerTest, ProcessPendingQueries) {
GetQueryObjectuivARB(kService3Id, GL_QUERY_RESULT_AVAILABLE_EXT, _))
.WillOnce(SetArgumentPointee<2>(0))
.RetiresOnSaturation();
- EXPECT_TRUE(manager_->ProcessPendingQueries(decoder_.get()));
+ EXPECT_TRUE(manager_->ProcessPendingQueries());
}
EXPECT_FALSE(query1->pending());
EXPECT_FALSE(query2->pending());
@@ -356,7 +358,7 @@ TEST_F(QueryManagerTest, ProcessPendingQueries) {
GetQueryObjectuivARB(kService3Id, GL_QUERY_RESULT_AVAILABLE_EXT, _))
.WillOnce(SetArgumentPointee<2>(0))
.RetiresOnSaturation();
- EXPECT_TRUE(manager_->ProcessPendingQueries(decoder_.get()));
+ EXPECT_TRUE(manager_->ProcessPendingQueries());
EXPECT_TRUE(query3->pending());
EXPECT_EQ(0u, sync3->process_count);
EXPECT_EQ(0u, sync3->result);
@@ -371,7 +373,7 @@ TEST_F(QueryManagerTest, ProcessPendingQueries) {
GetQueryObjectuivARB(kService3Id, GL_QUERY_RESULT_EXT, _))
.WillOnce(SetArgumentPointee<2>(kResult3))
.RetiresOnSaturation();
- EXPECT_TRUE(manager_->ProcessPendingQueries(decoder_.get()));
+ EXPECT_TRUE(manager_->ProcessPendingQueries());
EXPECT_FALSE(query3->pending());
EXPECT_EQ(kSubmitCount3, sync3->process_count);
EXPECT_EQ(kResult3, sync3->result);
@@ -386,12 +388,12 @@ TEST_F(QueryManagerTest, ProcessPendingBadSharedMemoryId) {
// Create Query.
QueryManager::Query::Ref query(
- manager_->CreateQuery(kClient1Id, kService1Id));
+ CreateQuery(kTarget, kClient1Id,
+ kInvalidSharedMemoryId, kSharedMemoryOffset, kService1Id));
ASSERT_TRUE(query.get() != NULL);
- query->Initialize(kTarget, kInvalidSharedMemoryId, kSharedMemoryOffset);
// Queue it
- manager_->AddPendingQuery(query.get(), kSubmitCount);
+ QueueQuery(query.get(), kService1Id, kSubmitCount);
// Process with return available.
// Expect 2 GL commands.
@@ -403,7 +405,7 @@ TEST_F(QueryManagerTest, ProcessPendingBadSharedMemoryId) {
GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_EXT, _))
.WillOnce(SetArgumentPointee<2>(kResult))
.RetiresOnSaturation();
- EXPECT_FALSE(manager_->ProcessPendingQueries(decoder_.get()));
+ EXPECT_FALSE(manager_->ProcessPendingQueries());
}
TEST_F(QueryManagerTest, ProcessPendingBadSharedMemoryOffset) {
@@ -415,12 +417,12 @@ TEST_F(QueryManagerTest, ProcessPendingBadSharedMemoryOffset) {
// Create Query.
QueryManager::Query::Ref query(
- manager_->CreateQuery(kClient1Id, kService1Id));
+ CreateQuery(kTarget, kClient1Id,
+ kSharedMemoryId, kInvalidSharedMemoryOffset, kService1Id));
ASSERT_TRUE(query.get() != NULL);
- query->Initialize(kTarget, kSharedMemoryId, kInvalidSharedMemoryOffset);
// Queue it
- manager_->AddPendingQuery(query.get(), kSubmitCount);
+ QueueQuery(query.get(), kService1Id, kSubmitCount);
// Process with return available.
// Expect 2 GL commands.
@@ -432,7 +434,7 @@ TEST_F(QueryManagerTest, ProcessPendingBadSharedMemoryOffset) {
GetQueryObjectuivARB(kService1Id, GL_QUERY_RESULT_EXT, _))
.WillOnce(SetArgumentPointee<2>(kResult))
.RetiresOnSaturation();
- EXPECT_FALSE(manager_->ProcessPendingQueries(decoder_.get()));
+ EXPECT_FALSE(manager_->ProcessPendingQueries());
}
TEST_F(QueryManagerTest, ExitWithPendingQuery) {
@@ -443,12 +445,12 @@ TEST_F(QueryManagerTest, ExitWithPendingQuery) {
// Create Query.
QueryManager::Query::Ref query(
- manager_->CreateQuery(kClient1Id, kService1Id));
+ CreateQuery(kTarget, kClient1Id,
+ kSharedMemoryId, kSharedMemoryOffset, kService1Id));
ASSERT_TRUE(query.get() != NULL);
- query->Initialize(kTarget, kSharedMemoryId, kSharedMemoryOffset);
// Queue it
- manager_->AddPendingQuery(query.get(), kSubmitCount);
+ QueueQuery(query.get(), kService1Id, kSubmitCount);
}
} // namespace gles2

Powered by Google App Engine
This is Rietveld 408576698