[Bf-blender-cvs] [188b1e3] cycles_kernel_split: Bug fix : Fix viewport render issue

varunsundar08 noreply at git.blender.org
Wed Apr 15 17:37:06 CEST 2015


Commit: 188b1e331ee50899076884f665549df1da5437df
Author: varunsundar08
Date:   Fri Apr 10 10:55:23 2015 +0530
Branches: cycles_kernel_split
https://developer.blender.org/rB188b1e331ee50899076884f665549df1da5437df

Bug fix : Fix viewport render issue

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

M	intern/cycles/device/device_opencl.cpp

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

diff --git a/intern/cycles/device/device_opencl.cpp b/intern/cycles/device/device_opencl.cpp
index 104f6f0..8687a4c 100644
--- a/intern/cycles/device/device_opencl.cpp
+++ b/intern/cycles/device/device_opencl.cpp
@@ -3371,6 +3371,7 @@ public:
 		}
 	}
 
+#ifdef __SPLIT_KERNEL__
 	/* Calculates the amount of memory that has to be always
 	 * allocated in order for the split kernel to function.
 	 * This memory is tile/scene-property invariant (meaning,
@@ -3536,6 +3537,11 @@ public:
 		int num_tiles_x = (((d_w - 1) / render_feasible_tile_size.x) + 1);
 		int num_tiles_y = (((d_h - 1) / render_feasible_tile_size.y) + 1);
 
+		/* buffer and rng_state offset calc */
+		size_t offset_index = rtile.offset + (rtile.x + rtile.y * rtile.stride);
+		size_t offset_x = offset_index % rtile.stride;
+		size_t offset_y = offset_index / rtile.stride;
+
 		/* Resize to_path_trace_rtile */
 		to_path_trace_rtile.resize(num_tiles_x * num_tiles_y);
 
@@ -3543,10 +3549,10 @@ public:
 			for (int tile_iter_x = 0; tile_iter_x < num_tiles_x; tile_iter_x++) {
 				int rtile_index = tile_iter_y * num_tiles_x + tile_iter_x;
 
-				to_path_trace_rtile[rtile_index].rng_state_offset_x = tile_iter_x * render_feasible_tile_size.x;
-				to_path_trace_rtile[rtile_index].rng_state_offset_y = tile_iter_y * render_feasible_tile_size.y;
-				to_path_trace_rtile[rtile_index].buffer_offset_x = tile_iter_x * render_feasible_tile_size.x;
-				to_path_trace_rtile[rtile_index].buffer_offset_y = tile_iter_y * render_feasible_tile_size.y;
+				to_path_trace_rtile[rtile_index].rng_state_offset_x = offset_x + tile_iter_x * render_feasible_tile_size.x;
+				to_path_trace_rtile[rtile_index].rng_state_offset_y = offset_y + tile_iter_y * render_feasible_tile_size.y;
+				to_path_trace_rtile[rtile_index].buffer_offset_x = offset_x + tile_iter_x * render_feasible_tile_size.x;
+				to_path_trace_rtile[rtile_index].buffer_offset_y = offset_y + tile_iter_y * render_feasible_tile_size.y;
 				to_path_trace_rtile[rtile_index].start_sample = rtile.start_sample;
 				to_path_trace_rtile[rtile_index].num_samples = rtile.num_samples;
 				to_path_trace_rtile[rtile_index].sample = rtile.sample;
@@ -3576,6 +3582,7 @@ public:
 		}
 		return to_path_trace_rtile;
 	}
+#endif
 
 	void thread_run(DeviceTask *task)
 	{
@@ -3589,9 +3596,9 @@ public:
 			RenderTile tile;
 
 #ifdef __SPLIT_KERNEL__
-		bool initialize_data_and_check_render_feasibility = false;
-		bool need_to_split_tiles_further = false;
-		size_t feasible_global_work_size;
+			bool initialize_data_and_check_render_feasibility = false;
+			bool need_to_split_tiles_further = false;
+			size_t feasible_global_work_size;
 #endif
 
 			/* keep rendering tiles until done */




More information about the Bf-blender-cvs mailing list