X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_profiler.hpp;h=42fd032008ca668b4fe3767947b092005996f426;hb=56ad11c7849c7e6ca0ad66558cb1a99c58d4cd3d;hp=dc3c4be0b0e9bafc868360366cf00f366132c9b3;hpb=7f71e4d00467059193ef4bcbe0db34c45e1aca03;p=apitrace diff --git a/common/trace_profiler.hpp b/common/trace_profiler.hpp index dc3c4be..42fd032 100644 --- a/common/trace_profiler.hpp +++ b/common/trace_profiler.hpp @@ -34,34 +34,51 @@ namespace trace { struct Profile { - struct Call { + struct CpuCall { unsigned no; + + int64_t cpuStart; + int64_t cpuDuration; + + std::string name; + }; + + struct DrawCall { + 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; + std::string name; }; struct Frame { unsigned no; + int64_t gpuStart; int64_t gpuDuration; + int64_t cpuStart; int64_t cpuDuration; + }; - std::vector calls; + struct Program { + Program() : gpuTotal(0), cpuTotal(0), pixelTotal(0) {} - typedef std::vector::iterator iterator; - typedef std::vector::const_iterator const_iterator; + uint64_t gpuTotal; + uint64_t cpuTotal; + uint64_t pixelTotal; + std::vector drawCalls; }; std::vector frames; + std::vector programs; + std::vector cpuCalls; }; class Profiler @@ -71,11 +88,6 @@ public: ~Profiler(); void setup(bool cpuTimes_, bool gpuTimes_, bool pixelsDrawn_); - void setBaseTimes(int64_t gpuStart, int64_t cpuStart); - bool hasBaseTimes(); - - 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, @@ -84,21 +96,26 @@ public: int64_t gpuStart, int64_t gpuDuration, int64_t cpuStart, int64_t cpuDuration); + void addFrameEnd(); + + bool hasBaseTimes(); + + void setBaseCpuTime(int64_t cpuStart); + void setBaseGpuTime(int64_t gpuStart); + + int64_t getBaseCpuTime(); + int64_t getBaseGpuTime(); + static void parseLine(const char* line, Profile* profile); private: int64_t baseGpuTime; int64_t baseCpuTime; + int64_t minCpuTime; bool cpuTimes; bool gpuTimes; bool pixelsDrawn; - - struct { - unsigned no; - int64_t gpuStart; - int64_t cpuStart; - } lastFrame; }; }