Chromium Code Reviews| Index: gpu/command_buffer/client/query_tracker_unittest.cc |
| diff --git a/gpu/command_buffer/client/query_tracker_unittest.cc b/gpu/command_buffer/client/query_tracker_unittest.cc |
| index 0820a994cd3632baed84dcbc0fc54674b0ebed47..d41a542a1c1648c049aeefd65ae1ce8db46687cb 100644 |
| --- a/gpu/command_buffer/client/query_tracker_unittest.cc |
| +++ b/gpu/command_buffer/client/query_tracker_unittest.cc |
| @@ -107,6 +107,8 @@ class QueryTrackerTest : public testing::Test { |
| return query->info_.bucket; |
| } |
| + uint32 GetHelperFlushGeneration() { return helper_->flush_generation(); } |
|
Zhenyao Mo
2014/04/15 17:04:29
nit: this should just be GetFlushGeneration().
rptr
2014/04/15 17:16:01
Done.
|
| + |
| scoped_ptr<CommandBuffer> command_buffer_; |
| scoped_ptr<GLES2CmdHelper> helper_; |
| scoped_ptr<MappedMemoryManager> mapped_memory_; |
| @@ -164,6 +166,27 @@ TEST_F(QueryTrackerTest, Query) { |
| EXPECT_FALSE(query->NeverUsed()); |
| EXPECT_TRUE(query->Pending()); |
| + // Flush only once if no more flushes happened between a call to |
| + // EndQuery command and CheckResultsAvailable |
| + // Advance put_ so flush calls in CheckResultsAvailable go through |
| + // and updates flush_generation count |
| + helper_->Noop(1); |
| + // Set Query in pending state_ to simulate EndQuery command is called |
| + query->MarkAsPending(kToken); |
| + EXPECT_TRUE(query->Pending()); |
| + // Store FlushGeneration count after EndQuery is called |
| + uint32 gen1 = GetHelperFlushGeneration(); |
| + EXPECT_FALSE(query->CheckResultsAvailable(helper_.get())); |
| + uint32 gen2 = GetHelperFlushGeneration(); |
| + EXPECT_NE(gen1, gen2); |
| + // Repeated calls to CheckResultsAvailable should not flush unnecessarily |
| + EXPECT_FALSE(query->CheckResultsAvailable(helper_.get())); |
| + gen1 = GetHelperFlushGeneration(); |
| + EXPECT_EQ(gen1, gen2); |
| + EXPECT_FALSE(query->CheckResultsAvailable(helper_.get())); |
| + gen1 = GetHelperFlushGeneration(); |
| + EXPECT_EQ(gen1, gen2); |
| + |
| // Simulate GPU process marking it as available. |
| QuerySync* sync = GetSync(query); |
| sync->process_count = query->submit_count(); |