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 */

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to