+ if (baseGpuTime == 0)
+ baseGpuTime = gpuStart;
+
+ if (baseCpuTime == 0)
+ baseCpuTime = cpuStart;
+
+ if (program != lastProgram) {
+ std::cout << "use shader program " << program << std::endl;
+ lastProgram = program;
+ }
+
+ std::cout << "call " << no;
+
+ if (gpuTimes) {
+ std::cout << " "
+ << (gpuStart - baseGpuTime) << " "
+ << gpuDuration;
+ } else {
+ std::cout << " _ _";
+ }
+
+ if (cpuTimes) {
+ std::cout << " "
+ << (cpuStart - baseCpuTime) << " "
+ << cpuDuration;
+ } else {
+ std::cout << " _ _";
+ }
+
+ if (pixelsDrawn) {
+ std::cout << " " << pixels;
+ } else {
+ std::cout << " _";
+ }
+
+ std::cout << " " << name << std::endl;
+}
+
+void Profiler::addFrameStart(unsigned no, uint64_t gpuStart, uint64_t cpuStart)
+{
+ if (baseGpuTime == 0)
+ baseGpuTime = gpuStart;
+
+ if (baseCpuTime == 0)
+ baseCpuTime = cpuStart;
+
+ lastFrame.no = no;
+ lastFrame.gpuStart = gpuStart - baseGpuTime;
+
+ std::cout << "frame begin " << lastFrame.no;
+
+ if (gpuTimes) {
+ std::cout << " " << lastFrame.gpuStart;
+ } else {
+ std::cout << " _";
+ }
+
+ if (gpuTimes) {
+ std::cout << " " << lastFrame.cpuStart;
+ } else {
+ std::cout << " _";
+ }
+
+ std::cout << std::endl;
+}
+
+void Profiler::addFrameEnd(uint64_t gpuEnd, uint64_t cpuEnd)
+{
+ if (baseGpuTime == 0)
+ baseGpuTime = gpuEnd;
+
+ if (baseCpuTime == 0)
+ baseCpuTime = cpuEnd;
+
+ lastFrame.gpuEnd = gpuEnd - baseGpuTime;
+
+ std::cout << "frame end " << lastFrame.no;
+
+ if (gpuTimes) {
+ std::cout << " " << lastFrame.gpuEnd << " " << (lastFrame.gpuEnd - lastFrame.gpuStart);
+ } else {
+ std::cout << " _ _";
+ }
+
+ if (cpuTimes) {
+ std::cout << " " << lastFrame.cpuEnd << " " << (lastFrame.cpuEnd - lastFrame.cpuStart);
+ } else {
+ std::cout << " _ _";
+ }