Cycles: show elapsed time for F12/background render.

This commit is contained in:
Brecht Van Lommel
2012-01-09 16:57:46 +00:00
parent 8f37c143ed
commit 47d9c6689b
3 changed files with 31 additions and 11 deletions

View File

@@ -298,10 +298,8 @@ void BlenderSession::update_status_progress()
get_status(status, substatus); get_status(status, substatus);
get_progress(progress, total_time); get_progress(progress, total_time);
if(!background) { BLI_timestr(total_time, time_str);
BLI_timestr(total_time, time_str); status = "Elapsed: " + string(time_str) + " | " + status;
status = "Time: " + string(time_str) + " | " + status;
}
if(substatus.size() > 0) if(substatus.size() > 0)
status += " | " + substatus; status += " | " + substatus;

View File

@@ -162,6 +162,9 @@ void Session::run_gpu()
reset_time = time_dt(); reset_time = time_dt();
paused_time = 0.0; paused_time = 0.0;
if(!params.background)
progress.set_start_time(start_time - paused_time);
while(!progress.get_cancel()) { while(!progress.get_cancel()) {
/* advance to next tile */ /* advance to next tile */
bool no_tiles = !tile_manager.next(); bool no_tiles = !tile_manager.next();
@@ -186,6 +189,9 @@ void Session::run_gpu()
pause_cond.wait(pause_lock); pause_cond.wait(pause_lock);
paused_time += time_dt() - pause_start; paused_time += time_dt() - pause_start;
if(!params.background)
progress.set_start_time(start_time - paused_time);
update_status_time(pause, no_tiles); update_status_time(pause, no_tiles);
progress.set_update(); progress.set_update();
@@ -332,6 +338,9 @@ void Session::run_cpu()
pause_cond.wait(pause_lock); pause_cond.wait(pause_lock);
paused_time += time_dt() - pause_start; paused_time += time_dt() - pause_start;
if(!params.background)
progress.set_start_time(start_time - paused_time);
update_status_time(pause, no_tiles); update_status_time(pause, no_tiles);
progress.set_update(); progress.set_update();
@@ -457,6 +466,9 @@ void Session::reset_(BufferParams& buffer_params, int samples)
preview_time = 0.0; preview_time = 0.0;
paused_time = 0.0; paused_time = 0.0;
sample = 0; sample = 0;
if(!params.background)
progress.set_start_time(start_time - paused_time);
} }
void Session::reset(BufferParams& buffer_params, int samples) void Session::reset(BufferParams& buffer_params, int samples)
@@ -556,15 +568,13 @@ void Session::update_status_time(bool show_pause, bool show_done)
/* update timing */ /* update timing */
if(preview_time == 0.0 && resolution == 1) if(preview_time == 0.0 && resolution == 1)
preview_time = time_dt(); preview_time = time_dt();
double total_time = time_dt() - start_time - paused_time;
double sample_time = (sample == 0)? 0.0: (time_dt() - preview_time - paused_time)/(sample); double sample_time = (sample == 0)? 0.0: (time_dt() - preview_time - paused_time)/(sample);
/* negative can happen when we pause a bit before rendering, can discard that */ /* negative can happen when we pause a bit before rendering, can discard that */
if(total_time < 0.0) total_time = 0.0;
if(preview_time < 0.0) preview_time = 0.0; if(preview_time < 0.0) preview_time = 0.0;
progress.set_sample(sample + 1, total_time, sample_time); progress.set_sample(sample + 1, sample_time);
} }
void Session::path_trace(Tile& tile) void Session::path_trace(Tile& tile)

View File

@@ -27,6 +27,7 @@
#include "util_function.h" #include "util_function.h"
#include "util_string.h" #include "util_string.h"
#include "util_time.h"
#include "util_thread.h" #include "util_thread.h"
CCL_NAMESPACE_BEGIN CCL_NAMESPACE_BEGIN
@@ -36,6 +37,7 @@ public:
Progress() Progress()
{ {
sample = 0; sample = 0;
start_time = time_dt();
total_time = 0.0f; total_time = 0.0f;
sample_time = 0.0f; sample_time = 0.0f;
status = "Initializing"; status = "Initializing";
@@ -90,12 +92,19 @@ public:
/* sample and timing information */ /* sample and timing information */
void set_sample(int sample_, double total_time_, double sample_time_) void set_start_time(double start_time_)
{
thread_scoped_lock lock(progress_mutex);
start_time = start_time;
}
void set_sample(int sample_, double sample_time_)
{ {
thread_scoped_lock lock(progress_mutex); thread_scoped_lock lock(progress_mutex);
sample = sample_; sample = sample_;
total_time = total_time_; total_time = time_dt() - start_time;
sample_time = sample_time_; sample_time = sample_time_;
} }
@@ -104,7 +113,7 @@ public:
thread_scoped_lock lock(progress_mutex); thread_scoped_lock lock(progress_mutex);
sample_ = sample; sample_ = sample;
total_time_ = total_time; total_time_ = (total_time > 0.0)? total_time: 0.0;
sample_time_ = sample_time; sample_time_ = sample_time;
} }
@@ -116,6 +125,7 @@ public:
thread_scoped_lock lock(progress_mutex); thread_scoped_lock lock(progress_mutex);
status = status_; status = status_;
substatus = substatus_; substatus = substatus_;
total_time = time_dt() - start_time;
} }
set_update(); set_update();
@@ -126,6 +136,7 @@ public:
{ {
thread_scoped_lock lock(progress_mutex); thread_scoped_lock lock(progress_mutex);
substatus = substatus_; substatus = substatus_;
total_time = time_dt() - start_time;
} }
set_update(); set_update();
@@ -158,6 +169,7 @@ protected:
int sample; int sample;
double start_time;
double total_time; double total_time;
double sample_time; double sample_time;