X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_profiler.hpp;h=dc3c4be0b0e9bafc868360366cf00f366132c9b3;hb=c53c649fae47d25824e905e3a08d7a27585ffc3f;hp=191ac72ffe34c38e0da3851e1d6d7ad51dd62976;hpb=f91056b5782d48d526f19dacd5a988003fc6f11e;p=apitrace diff --git a/common/trace_profiler.hpp b/common/trace_profiler.hpp index 191ac72..dc3c4be 100644 --- a/common/trace_profiler.hpp +++ b/common/trace_profiler.hpp @@ -27,28 +27,77 @@ #define TRACE_PROFILER_H #include +#include #include namespace trace { + +struct Profile { + struct Call { + unsigned no; + int64_t gpuStart; + int64_t gpuDuration; + int64_t cpuStart; + int64_t cpuDuration; + int64_t pixels; + unsigned program; + std::string name; + + typedef std::vector::iterator iterator; + typedef std::vector::const_iterator const_iterator; + }; + + struct Frame { + unsigned no; + int64_t gpuStart; + int64_t gpuDuration; + int64_t cpuStart; + int64_t cpuDuration; + + std::vector calls; + + typedef std::vector::iterator iterator; + typedef std::vector::const_iterator const_iterator; + }; + + std::vector frames; +}; + class Profiler { public: Profiler(); ~Profiler(); - void addCall(unsigned no, const char* name, uint64_t gpu_start, uint64_t gpu_duration); + void setup(bool cpuTimes_, bool gpuTimes_, bool pixelsDrawn_); + void setBaseTimes(int64_t gpuStart, int64_t cpuStart); + bool hasBaseTimes(); - void addFrameStart(unsigned no, uint64_t timestamp); - void addFrameEnd(uint64_t timestamp); + void addFrameStart(unsigned no, int64_t gpuStart, int64_t cpuStart); + void addFrameEnd(int64_t gpuEnd, int64_t cpuEnd); + + void addCall(unsigned no, + const char* name, + unsigned program, + int64_t pixels, + int64_t gpuStart, int64_t gpuDuration, + int64_t cpuStart, int64_t cpuDuration); + + static void parseLine(const char* line, Profile* profile); private: - uint64_t baseTime; + int64_t baseGpuTime; + int64_t baseCpuTime; + + bool cpuTimes; + bool gpuTimes; + bool pixelsDrawn; struct { unsigned no; - uint64_t start; - uint64_t end; + int64_t gpuStart; + int64_t cpuStart; } lastFrame; }; }