Commit: c95a89529569edb9c083e11823a67ad3a2030f9c
Author: varunsundar08
Date:   Fri May 1 00:52:37 2015 +0530
Branches: cycles_kernel_split
https://developer.blender.org/rBc95a89529569edb9c083e11823a67ad3a2030f9c

Complete all kernel exec before releasing tile

===================================================================

M       intern/cycles/device/device_opencl.cpp

===================================================================

diff --git a/intern/cycles/device/device_opencl.cpp 
b/intern/cycles/device/device_opencl.cpp
index d95e954..146393c 100644
--- a/intern/cycles/device/device_opencl.cpp
+++ b/intern/cycles/device/device_opencl.cpp
@@ -1251,6 +1251,16 @@ public:
 
                                        task->update_progress(&tile);
                                }
+
+                               /* Complete kernel execution before release 
tile */
+                               /* This helps in multi-device render;
+                               * The device that reaches the critical-section 
function release_tile
+                               * waits (stalling other devices from entering 
release_tile) for all kernels
+                               * to complete. If device1 (a slow-render 
device) reaches release_tile first then
+                               * it would stall device2 (a fast-render device) 
from proceeding to render next tile
+                               */
+                               clFinish(cqCommandQueue);
+
                                task->release_tile(tile);
                        }
                }
@@ -3566,6 +3576,16 @@ The current tile of dimensions %dx%d is split into tiles 
of dimension %dx%d for
                                        path_trace(tile, 0);
                                }
                                tile.sample = tile.start_sample + 
tile.num_samples;
+
+                               /* Complete kernel execution before release 
tile */
+                               /* This helps in multi-device render;
+                                * The device that reaches the critical-section 
function release_tile
+                                * waits (stalling other devices from entering 
release_tile) for all kernels
+                                * to complete. If device1 (a slow-render 
device) reaches release_tile first then
+                                * it would stall device2 (a fast-render 
device) from proceeding to render next tile
+                                */
+                               clFinish(cqCommandQueue);
+
                                task->release_tile(tile);
                        }
                }

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

Reply via email to