| 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
|
|
|