diff --git a/src/demo/demo.c b/src/demo/demo.c index ccbdaf215..30dbec9bf 100644 --- a/src/demo/demo.c +++ b/src/demo/demo.c @@ -360,6 +360,8 @@ int main(int argc, char** argv){ fprintf(stderr, "Couldn't set locale based on user preferences\n"); return EXIT_FAILURE; } + struct timespec starttime; + clock_gettime(CLOCK_MONOTONIC_RAW, &starttime); sigset_t sigmask; sigemptyset(&sigmask); sigaddset(&sigmask, SIGWINCH); @@ -409,13 +411,16 @@ int main(int argc, char** argv){ return EXIT_FAILURE; } bool failed = false; + uint64_t totalbytes = 0; + long unsigned totalframes = 0; + uint64_t totalrenderns = 0; printf("\n"); printf(" total│frames│output(B)│rendering│%%r│%6s│\n", "FPS"); printf("══╤═╤════════╪══════╪═════════╪═════════╪══╪══════╡\n"); + char timebuf[PREFIXSTRLEN + 1]; + char totalbuf[BPREFIXSTRLEN + 1]; + char rtimebuf[PREFIXSTRLEN + 1]; for(size_t i = 0 ; i < strlen(demos) ; ++i){ - char totalbuf[BPREFIXSTRLEN + 1]; - char rtimebuf[PREFIXSTRLEN + 1]; - char timebuf[PREFIXSTRLEN + 1]; qprefix(results[i].timens, GIG, timebuf, 0); qprefix(results[i].stats.render_ns, GIG, rtimebuf, 0); bprefix(results[i].stats.render_bytes, 1, totalbuf, 0); @@ -433,8 +438,20 @@ int main(int argc, char** argv){ if(results[i].failed){ failed = true; } + totalframes += results[i].stats.renders; + totalbytes += results[i].stats.render_bytes; + totalrenderns += results[i].stats.render_ns; } free(results); + struct timespec endtime; + clock_gettime(CLOCK_MONOTONIC_RAW, &endtime); + uint64_t nsdelta = timespec_to_ns(&endtime) - timespec_to_ns(&starttime); + qprefix(nsdelta, GIG, timebuf, 0); + bprefix(totalbytes, 1, totalbuf, 0); + qprefix(totalrenderns, GIG, rtimebuf, 0); + printf("══╧═╧════════╪══════╪═════════╪═════════╪══╧══════╛\n"); + printf(" %*ss│%6lu│%*s│ %*ss│\n", PREFIXSTRLEN, timebuf, + totalframes, BPREFIXSTRLEN, totalbuf, PREFIXSTRLEN, rtimebuf); if(failed){ fprintf(stderr, " Error running demo. Is \"%s\" the correct data path?\n", datadir); }