123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // 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 <stdint.h>
- #include <map>
- #include <set>
- #include "ui/gl/gl_bindings.h"
- namespace gl {
- class MockGLInterface;
- class GPUTimingFake {
- public:
- GPUTimingFake();
- ~GPUTimingFake();
- void Reset();
- // Used to set the current GPU time queries will return.
- static int64_t GetFakeCPUTime(); // Useful for binding for Fake CPU time.
- void SetCurrentCPUTime(int64_t current_time);
- void SetCurrentGLTime(GLint64 current_time);
- void SetCPUGLOffset(int64_t offset);
- // 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 ExpectGPUTimeStampQuery(MockGLInterface& gl, bool elapsed_query);
- 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 FakeGLGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* 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;
- static int64_t fake_cpu_time_;
- GLint64 current_gl_time_ = 0;
- int64_t gl_cpu_time_offset_ = 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 gl
- #endif // UI_GL_GPU_TIMING_FAKE_H_
|