X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_profiler.hpp;h=e3ae016be7fa654b99e497e64fdc3c7ef914cfb8;hb=HEAD;hp=c8b38b9a73be2c294ed1a5afbc1a7c3c5f6af556;hpb=50f9686913b8fc9f46662b299a9810dee08b0a9c;p=apitrace diff --git a/common/trace_profiler.hpp b/common/trace_profiler.hpp index c8b38b9..e3ae016 100644 --- a/common/trace_profiler.hpp +++ b/common/trace_profiler.hpp @@ -1,6 +1,7 @@ /************************************************************************** * * Copyright 2012 VMware, Inc. + * Copyright 2013 Intel, Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -36,32 +37,62 @@ namespace trace struct Profile { struct Call { unsigned no; + + unsigned program; + int64_t gpuStart; int64_t gpuDuration; + int64_t cpuStart; int64_t cpuDuration; + + int64_t vsizeStart; + int64_t vsizeDuration; + int64_t rssStart; + int64_t rssDuration; + 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; + int64_t vsizeStart; + int64_t vsizeDuration; + int64_t rssStart; + int64_t rssDuration; - typedef std::vector::iterator iterator; - typedef std::vector::const_iterator const_iterator; + /* Indices to profile->calls array */ + struct { + unsigned begin; + unsigned end; + } calls; }; + struct Program { + Program() : gpuTotal(0), cpuTotal(0), pixelTotal(0) {} + + uint64_t gpuTotal; + uint64_t cpuTotal; + uint64_t pixelTotal; + int64_t vsizeTotal; + int64_t rssTotal; + + /* Indices to profile->calls array */ + std::vector calls; + }; + + std::vector calls; std::vector frames; + std::vector programs; }; class Profiler @@ -70,33 +101,44 @@ public: Profiler(); ~Profiler(); - void setup(bool cpuTimes_, bool gpuTimes_, bool pixelsDrawn_); - - void addFrameStart(unsigned no, uint64_t gpuStart, uint64_t cpuStart); - void addFrameEnd(uint64_t gpuEnd, uint64_t cpuEnd); + void setup(bool cpuTimes_, bool gpuTimes_, bool pixelsDrawn_, bool memoryUsage_); void addCall(unsigned no, const char* name, unsigned program, - uint64_t pixels, - uint64_t gpuStart, uint64_t gpuDuration, - uint64_t cpuStart, uint64_t cpuDuration); + int64_t pixels, + int64_t gpuStart, int64_t gpuDuration, + int64_t cpuStart, int64_t cpuDuration, + int64_t vsizeStart, int64_t vsizeDuration, + int64_t rssStart, int64_t rssDuration); + + void addFrameEnd(); + + bool hasBaseTimes(); + + void setBaseCpuTime(int64_t cpuStart); + void setBaseGpuTime(int64_t gpuStart); + void setBaseVsizeUsage(int64_t vsizeStart); + void setBaseRssUsage(int64_t rssStart); + + int64_t getBaseCpuTime(); + int64_t getBaseGpuTime(); + int64_t getBaseVsizeUsage(); + int64_t getBaseRssUsage(); static void parseLine(const char* line, Profile* profile); private: - uint64_t baseGpuTime; - uint64_t baseCpuTime; + int64_t baseGpuTime; + int64_t baseCpuTime; + int64_t minCpuTime; + int64_t baseVsizeUsage; + int64_t baseRssUsage; bool cpuTimes; bool gpuTimes; bool pixelsDrawn; - - struct { - unsigned no; - uint64_t gpuStart; - uint64_t cpuStart; - } lastFrame; + bool memoryUsage; }; }