[Bf-blender-cvs] [c95a895] cycles_kernel_split: Complete all kernel exec before releasing tile

varunsundar08 noreply at git.blender.org
Thu Apr 30 23:25:34 CEST 2015


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);
 			}
 		}




More information about the Bf-blender-cvs mailing list