Index: gpu/command_buffer/service/gpu_tracer_unittest.cc |
diff --git a/gpu/command_buffer/service/gpu_tracer_unittest.cc b/gpu/command_buffer/service/gpu_tracer_unittest.cc |
index 75d66e595475a3ec0ebad26a6a7477b49813628d..fe91f70166c8209c19d11dc5f38eaf414eb35d6e 100644 |
--- a/gpu/command_buffer/service/gpu_tracer_unittest.cc |
+++ b/gpu/command_buffer/service/gpu_tracer_unittest.cc |
@@ -51,14 +51,14 @@ class GlFakeQueries { |
void SetCurrentGLTime(GLint64 current_time) { current_time_ = current_time; } |
- void GenQueries(GLsizei n, GLuint* ids) { |
+ void GenQueriesARB(GLsizei n, GLuint* ids) { |
for (GLsizei i = 0; i < n; i++) { |
ids[i] = next_query_id_++; |
alloced_queries_.insert(ids[i]); |
} |
} |
- void DeleteQueries(GLsizei n, const GLuint* ids) { |
+ void DeleteQueriesARB(GLsizei n, const GLuint* ids) { |
for (GLsizei i = 0; i < n; i++) { |
alloced_queries_.erase(ids[i]); |
query_timestamp_.erase(ids[i]); |
@@ -109,56 +109,13 @@ class GlFakeQueries { |
std::map<GLuint, GLint64> query_timestamp_; |
}; |
-class GpuTracerTest : public GpuServiceTest { |
+class BaseGpuTracerTest : public GpuServiceTest { |
public: |
- GpuTracerTest() {} |
+ BaseGpuTracerTest() {} |
/////////////////////////////////////////////////////////////////////////// |
- protected: |
- virtual void SetUp() { |
- GpuServiceTest::SetUp(); |
- gl_fake_queries_.Reset(); |
- } |
- |
- virtual void TearDown() { |
- gl_.reset(); |
- gl_fake_queries_.Reset(); |
- GpuServiceTest::TearDown(); |
- } |
- |
- void SetupTimerQueryMocks() { |
- // Delegate query APIs used by GPUTrace to a GlFakeQueries |
- EXPECT_CALL(*gl_, GenQueries(_, NotNull())).Times(AtLeast(1)).WillOnce( |
- Invoke(&gl_fake_queries_, &GlFakeQueries::GenQueries)); |
- |
- EXPECT_CALL(*gl_, GetQueryObjectiv(_, GL_QUERY_RESULT_AVAILABLE, NotNull())) |
- .Times(AtLeast(2)) |
- .WillRepeatedly( |
- Invoke(&gl_fake_queries_, &GlFakeQueries::GetQueryObjectiv)); |
- |
- EXPECT_CALL(*gl_, QueryCounter(_, GL_TIMESTAMP)) |
- .Times(AtLeast(2)) |
- .WillRepeatedly( |
- Invoke(&gl_fake_queries_, &GlFakeQueries::QueryCounter)); |
- |
- EXPECT_CALL(*gl_, GetQueryObjectui64v(_, GL_QUERY_RESULT, NotNull())) |
- .Times(AtLeast(2)) |
- .WillRepeatedly( |
- Invoke(&gl_fake_queries_, &GlFakeQueries::GetQueryObjectui64v)); |
- |
- EXPECT_CALL(*gl_, DeleteQueries(2, NotNull())) |
- .Times(AtLeast(1)) |
- .WillRepeatedly( |
- Invoke(&gl_fake_queries_, &GlFakeQueries::DeleteQueries)); |
- } |
- |
- GlFakeQueries gl_fake_queries_; |
-}; |
- |
-TEST_F(GpuTracerTest, GPUTrace) { |
- // Test basic timer query functionality |
- { |
+ void DoTraceTest() { |
MockOutputter* outputter = new MockOutputter(); |
scoped_refptr<Outputter> outputter_ref = outputter; |
@@ -180,7 +137,8 @@ TEST_F(GpuTracerTest, GPUTrace) { |
Trace(trace_name, expect_start_time, expect_end_time)); |
scoped_refptr<GPUTrace> trace = |
- new GPUTrace(outputter_ref, trace_name, offset_time); |
+ new GPUTrace(outputter_ref, trace_name, offset_time, |
+ GetTracerType()); |
gl_fake_queries_.SetCurrentGLTime(start_timestamp); |
trace->Start(); |
@@ -203,6 +161,76 @@ TEST_F(GpuTracerTest, GPUTrace) { |
// Proces should output expected Trace results to MockOutputter |
trace->Process(); |
} |
+ |
+ protected: |
+ virtual void SetUp() { |
+ GpuServiceTest::SetUp(); |
+ gl_fake_queries_.Reset(); |
+ } |
+ |
+ virtual void TearDown() { |
+ gl_.reset(); |
+ gl_fake_queries_.Reset(); |
+ GpuServiceTest::TearDown(); |
+ } |
+ |
+ virtual void SetupTimerQueryMocks() { |
+ // Delegate query APIs used by GPUTrace to a GlFakeQueries |
+ EXPECT_CALL(*gl_, GenQueriesARB(_, NotNull())).Times(AtLeast(1)).WillOnce( |
+ Invoke(&gl_fake_queries_, &GlFakeQueries::GenQueriesARB)); |
+ |
+ EXPECT_CALL(*gl_, GetQueryObjectiv(_, GL_QUERY_RESULT_AVAILABLE, NotNull())) |
+ .Times(AtLeast(2)) |
+ .WillRepeatedly( |
+ Invoke(&gl_fake_queries_, &GlFakeQueries::GetQueryObjectiv)); |
+ |
+ EXPECT_CALL(*gl_, QueryCounter(_, GL_TIMESTAMP)) |
+ .Times(AtLeast(2)) |
+ .WillRepeatedly( |
+ Invoke(&gl_fake_queries_, &GlFakeQueries::QueryCounter)); |
+ |
+ EXPECT_CALL(*gl_, GetQueryObjectui64v(_, GL_QUERY_RESULT, NotNull())) |
+ .Times(AtLeast(2)) |
+ .WillRepeatedly( |
+ Invoke(&gl_fake_queries_, &GlFakeQueries::GetQueryObjectui64v)); |
+ |
+ EXPECT_CALL(*gl_, DeleteQueriesARB(2, NotNull())) |
+ .Times(AtLeast(1)) |
+ .WillRepeatedly( |
+ Invoke(&gl_fake_queries_, &GlFakeQueries::DeleteQueriesARB)); |
+ } |
+ |
+ virtual GpuTracerType GetTracerType() = 0; |
+ |
+ GlFakeQueries gl_fake_queries_; |
+}; |
+ |
+class GpuARBTimerTracerTest : public BaseGpuTracerTest { |
+ protected: |
+ virtual GpuTracerType GetTracerType() OVERRIDE { |
+ return kTracerTypeARBTimer; |
+ } |
+}; |
+ |
+class GpuDisjointTimerTracerTest : public BaseGpuTracerTest { |
+ protected: |
+ virtual GpuTracerType GetTracerType() OVERRIDE { |
+ return kTracerTypeDisjointTimer; |
+ } |
+}; |
+ |
+TEST_F(GpuARBTimerTracerTest, GPUTrace) { |
+ // Test basic timer query functionality |
+ { |
+ DoTraceTest(); |
+ } |
+} |
+ |
+TEST_F(GpuDisjointTimerTracerTest, GPUTrace) { |
+ // Test basic timer query functionality |
+ { |
+ DoTraceTest(); |
+ } |
} |
} // namespace gles2 |