| Index: ui/gl/gpu_timing_fake.h
|
| diff --git a/ui/gl/gpu_timing_fake.h b/ui/gl/gpu_timing_fake.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..625a394d8aff7d86c2073f1751299e6a4d0f5d3a
|
| --- /dev/null
|
| +++ b/ui/gl/gpu_timing_fake.h
|
| @@ -0,0 +1,82 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef UI_GL_GPU_TIMING_FAKE_H_
|
| +#define UI_GL_GPU_TIMING_FAKE_H_
|
| +
|
| +#include <map>
|
| +#include <set>
|
| +
|
| +#include "ui/gl/gl_bindings.h"
|
| +
|
| +namespace gfx {
|
| +class MockGLInterface;
|
| +
|
| +class GPUTimingFake {
|
| + public:
|
| + GPUTimingFake();
|
| + ~GPUTimingFake();
|
| +
|
| + void Reset();
|
| +
|
| + // Used to set the current GPU time queries will return.
|
| + void SetCurrentGLTime(GLint64 current_time);
|
| +
|
| + // Used to signal a disjoint occurred for disjoint timer queries.
|
| + void SetDisjoint();
|
| +
|
| + // GPUTimer fake queries which can be called multiple times.
|
| + void ExpectGetErrorCalls(MockGLInterface& gl);
|
| + void ExpectDisjointCalls(MockGLInterface& gl);
|
| + void ExpectNoDisjointCalls(MockGLInterface& gl);
|
| +
|
| + // GPUTimer fake queries which can only be called once per setup.
|
| + void ExpectGPUTimerQuery(MockGLInterface& gl, bool elapsed_query);
|
| + void ExpectOffsetCalculationQuery(MockGLInterface& gl);
|
| + void ExpectNoOffsetCalculationQuery(MockGLInterface& gl);
|
| +
|
| + // Fake GL Functions.
|
| + void FakeGLGenQueries(GLsizei n, GLuint* ids);
|
| + void FakeGLDeleteQueries(GLsizei n, const GLuint* ids);
|
| + void FakeGLBeginQuery(GLenum target, GLuint id);
|
| + void FakeGLEndQuery(GLenum target);
|
| + void FakeGLGetQueryObjectiv(GLuint id, GLenum pname, GLint* params);
|
| + void FakeGLQueryCounter(GLuint id, GLenum target);
|
| + void FakeGLGetInteger64v(GLenum pname, GLint64 * data);
|
| + void FakeGLGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64* params);
|
| + void FakeGLGetIntegerv(GLenum pname, GLint* params);
|
| + GLenum FakeGLGetError();
|
| +
|
| + protected:
|
| + bool disjointed_ = false;
|
| + GLint64 current_time_ = 0;
|
| + GLuint next_query_id_ = 0;
|
| + std::set<GLuint> allocated_queries_;
|
| + struct QueryResult {
|
| + enum QueryResultType {
|
| + kQueryResultType_Invalid,
|
| + kQueryResultType_TimeStamp,
|
| + kQueryResultType_Elapsed
|
| + } type_ = kQueryResultType_Invalid;
|
| + GLint64 begin_time_ = 0;
|
| + GLint64 value_ = 0;
|
| + };
|
| + std::map<GLuint, QueryResult> query_results_;
|
| + struct ElapsedQuery {
|
| + bool active_ = false;
|
| + GLuint query_id_ = 0;
|
| + GLint64 begin_time_ = 0;
|
| +
|
| + void Reset() {
|
| + active_ = false;
|
| + query_id_ = 0;
|
| + begin_time_ = 0;
|
| + }
|
| + };
|
| + ElapsedQuery current_elapsed_query_;
|
| +};
|
| +
|
| +} // namespace gfx
|
| +
|
| +#endif // UI_GL_GPU_TIMING_FAKE_H_
|
|
|