Revision: 49641
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49641
Author:   nazgul
Date:     2012-08-07 09:22:26 +0000 (Tue, 07 Aug 2012)
Log Message:
-----------
Tomato Cycles: do not discard unfinished tiles on cancel

Do not discard (fill with black) tiles which are not fully rendered
(not all the samples are calculated for tile) when canceling render.

This could be helpful to tweak some settings when render glitch is
discovered. Also it could be used in such scenarios as setting
samples number to something really high and render still image
until result is reasonable, controlling this manually.

This could make cancel not so responsible on CPU, but it wouldn't
be less responsible than GPU, also could potentially give some
%% of speedup by avoiding checking cancel state after every pixel
sampled.

Modified Paths:
--------------
    branches/soc-2011-tomato/intern/cycles/device/device_cpu.cpp
    branches/soc-2011-tomato/intern/cycles/render/session.cpp

Modified: branches/soc-2011-tomato/intern/cycles/device/device_cpu.cpp
===================================================================
--- branches/soc-2011-tomato/intern/cycles/device/device_cpu.cpp        
2012-08-07 09:20:30 UTC (rev 49640)
+++ branches/soc-2011-tomato/intern/cycles/device/device_cpu.cpp        
2012-08-07 09:22:26 UTC (rev 49641)
@@ -154,20 +154,18 @@
 #ifdef WITH_OPTIMIZED_KERNEL
                        if(system_cpu_support_optimized()) {
                                for(int sample = start_sample; sample < 
end_sample; sample++) {
+                                       if (task.get_cancel() || 
task_pool.cancelled())
+                                               break;
+
                                        for(int y = tile.y; y < tile.y + 
tile.h; y++) {
                                                for(int x = tile.x; x < tile.x 
+ tile.w; x++) {
-                                                       if (task.get_cancel())
-                                                               break;
-
-                                                       
if(task_pool.cancelled())
-                                                               break;
-
                                                        
kernel_cpu_optimized_path_trace(kg, render_buffer, rng_state,
                                                                sample, x, y, 
tile.offset, tile.stride);
                                                }
                                        }
 
                                        tile.sample = sample + 1;
+
                                        task.update_progress(tile);
                                }
                        }
@@ -175,22 +173,18 @@
 #endif
                        {
                                for(int sample = start_sample; sample < 
end_sample; sample++) {
+                                       if (task.get_cancel() || 
task_pool.cancelled())
+                                               break;
+
                                        for(int y = tile.y; y < tile.y + 
tile.h; y++) {
                                                for(int x = tile.x; x < tile.x 
+ tile.w; x++) {
-                                                       if (task.get_cancel()) {
-                                                               break;
-                                                       }
-
-                                                       
if(task_pool.cancelled())
-                                                               break;
-
                                                        
kernel_cpu_path_trace(kg, render_buffer, rng_state,
                                                                sample, x, y, 
tile.offset, tile.stride);
-
                                                }
                                        }
 
                                        tile.sample = sample + 1;
+
                                        task.update_progress(tile);
                                }
                        }

Modified: branches/soc-2011-tomato/intern/cycles/render/session.cpp
===================================================================
--- branches/soc-2011-tomato/intern/cycles/render/session.cpp   2012-08-07 
09:20:30 UTC (rev 49640)
+++ branches/soc-2011-tomato/intern/cycles/render/session.cpp   2012-08-07 
09:22:26 UTC (rev 49641)
@@ -380,8 +380,7 @@
        if(update_render_tile_cb) {
                /* todo: optimize this by making it thread safe and removing 
lock */
 
-               if(!progress.get_cancel())
-                       update_render_tile_cb(rtile);
+               update_render_tile_cb(rtile);
        }
 
        update_status_time();
@@ -393,8 +392,8 @@
 
        if(write_render_tile_cb) {
                /* todo: optimize this by making it thread safe and removing 
lock */
-               if(!progress.get_cancel())
-                       write_render_tile_cb(rtile);
+               write_render_tile_cb(rtile);
+
                delete rtile.buffers;
        }
 

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to