diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-09-24 17:16:16 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-09-24 17:34:15 +0300 |
commit | c0db8e3b41e21bb6f8327a038601827a0d20a9cc (patch) | |
tree | cb38e0f0af122df622ae5ebbc9f8c60f813df66a /intern/cycles/render | |
parent | 585998987ab1a948d3aee7e377764fe2900b4e03 (diff) |
Fix T91660: Cycles remaining render time does not take into account time limit
Diffstat (limited to 'intern/cycles/render')
-rw-r--r-- | intern/cycles/render/session.cpp | 19 | ||||
-rw-r--r-- | intern/cycles/render/session.h | 2 |
2 files changed, 21 insertions, 0 deletions
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index a8957b8def6..56d92fb0ad8 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -519,6 +519,25 @@ void Session::set_gpu_display(unique_ptr<GPUDisplay> gpu_display) path_trace_->set_gpu_display(move(gpu_display)); } +double Session::get_estimated_remaining_time() const +{ + const float completed = progress.get_progress(); + if (completed == 0.0f) { + return 0.0; + } + + double total_time, render_time; + progress.get_time(total_time, render_time); + double remaining = (1.0 - (double)completed) * (render_time / (double)completed); + + const double time_limit = render_scheduler_.get_time_limit(); + if (time_limit != 0.0) { + remaining = min(remaining, max(time_limit - render_time, 0.0)); + } + + return remaining; +} + void Session::wait() { if (session_thread_) { diff --git a/intern/cycles/render/session.h b/intern/cycles/render/session.h index 5623604bfe8..e3056e7778b 100644 --- a/intern/cycles/render/session.h +++ b/intern/cycles/render/session.h @@ -145,6 +145,8 @@ class Session { void set_gpu_display(unique_ptr<GPUDisplay> gpu_display); + double get_estimated_remaining_time() const; + void device_free(); /* Returns the rendering progress or 0 if no progress can be determined |