[Bf-blender-cvs] [d919c44a30] cycles_split_kernel: Cycles: More variable clean up
Mai Lavelle
noreply at git.blender.org
Fri Jan 6 04:03:20 CET 2017
Commit: d919c44a30138389e4aecb915a8da2b4940feb87
Author: Mai Lavelle
Date: Thu Dec 22 01:06:47 2016 -0500
Branches: cycles_split_kernel
https://developer.blender.org/rBd919c44a30138389e4aecb915a8da2b4940feb87
Cycles: More variable clean up
===================================================================
M intern/cycles/device/device_split_kernel.cpp
===================================================================
diff --git a/intern/cycles/device/device_split_kernel.cpp b/intern/cycles/device/device_split_kernel.cpp
index 0d968d450e..d7a0297983 100644
--- a/intern/cycles/device/device_split_kernel.cpp
+++ b/intern/cycles/device/device_split_kernel.cpp
@@ -90,18 +90,21 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
/* TODO(mai): should be easy enough to remove these variables from tile */
/* Buffer and rng_state offset calc. */
- size_t offset_index = tile.offset + (tile.x + tile.y * tile.stride);
- size_t offset_x = offset_index % tile.stride;
- size_t offset_y = offset_index / tile.stride;
+ {
+ size_t offset_index = tile.offset + (tile.x + tile.y * tile.stride);
+ size_t offset_x = offset_index % tile.stride;
+ size_t offset_y = offset_index / tile.stride;
- tile.rng_state_offset_x = offset_x;
- tile.rng_state_offset_y = offset_y;
- tile.buffer_offset_x = offset_x;
- tile.buffer_offset_y = offset_y;
+ tile.rng_state_offset_x = offset_x;
+ tile.rng_state_offset_y = offset_y;
+ tile.buffer_offset_x = offset_x;
+ tile.buffer_offset_y = offset_y;
- tile.buffer_rng_state_stride = tile.stride;
- tile.stride = tile.w;
+ tile.buffer_rng_state_stride = tile.stride;
+ tile.stride = tile.w;
+ }
+ /* Get local size */
size_t local_size[2];
{
int2 lsize = device->split_kernel_local_size();
@@ -113,32 +116,31 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
* work size dimensions.
*/
int2 max_render_feasible_tile_size;
- const int2 tile_size = task->requested_tile_size;
- max_render_feasible_tile_size.x = round_up(tile_size.x, local_size[0]);
- max_render_feasible_tile_size.y = round_up(tile_size.y, local_size[1]);
+ max_render_feasible_tile_size.x = round_up(task->requested_tile_size.x, local_size[0]);
+ max_render_feasible_tile_size.y = round_up(task->requested_tile_size.y, local_size[1]);
/* Calculate per_thread_output_buffer_size. */
size_t per_thread_output_buffer_size;
- size_t output_buffer_size = tile.buffers->buffer.device_size;
+ {
+ size_t output_buffer_size = tile.buffers->buffer.device_size;
#if 0
- /* This value is different when running on AMD and NV. */
- if(device->background) {
- /* In offline render the number of buffer elements
- * associated with tile.buffer is the current tile size.
- */
- per_thread_output_buffer_size =
- output_buffer_size / (tile.w * tile.h);
- }
- else
+ /* This value is different when running on AMD and NV. */
+ if(device->background) {
+ /* In offline render the number of buffer elements
+ * associated with tile.buffer is the current tile size.
+ */
+ per_thread_output_buffer_size = output_buffer_size / (tile.w * tile.h);
+ }
+ else
#endif
- {
- /* interactive rendering, unlike offline render, the number of buffer elements
- * associated with tile.buffer is the entire viewport size.
- */
- per_thread_output_buffer_size =
- output_buffer_size / (tile.buffers->params.width *
- tile.buffers->params.height);
+ {
+ /* interactive rendering, unlike offline render, the number of buffer elements
+ * associated with tile.buffer is the entire viewport size.
+ */
+ per_thread_output_buffer_size = output_buffer_size /
+ (tile.buffers->params.width * tile.buffers->params.height);
+ }
}
/* set global_size and num_parallel_samples */
@@ -172,6 +174,7 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
assert(global_size[0] * global_size[1] <= max_render_feasible_tile_size.x * max_render_feasible_tile_size.y);
}
+ /* Number of elements in the global state buffer */
int num_global_elements = max_render_feasible_tile_size.x * max_render_feasible_tile_size.y;
/* Allocate all required global memory once. */
@@ -180,12 +183,9 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
#ifdef __WORK_STEALING__
/* Calculate max groups */
- size_t max_global_size[2];
- max_global_size[0] = round_up(max_render_feasible_tile_size.x, local_size[0]);
- max_global_size[1] = round_up(max_render_feasible_tile_size.y, local_size[1]);
- /* Denotes the maximum work groups possible w.r.t. current tile size. */
- unsigned int max_work_groups = (max_global_size[0] * max_global_size[1]) /
+ /* Denotes the maximum work groups possible w.r.t. current requested tile size. */
+ unsigned int max_work_groups = (max_render_feasible_tile_size.x * max_render_feasible_tile_size.y) /
(local_size[0] * local_size[1]);
/* Allocate work_pool_wgs memory. */
More information about the Bf-blender-cvs
mailing list