[Bf-blender-cvs] [7fdc17434e3] split-kernel-faster-building: Cycles: Fix mistake with ShaderEvalTask that could lead to crash

Mai Lavelle noreply at git.blender.org
Mon Nov 27 07:27:53 CET 2017


Commit: 7fdc17434e386b29fd446e4dc066c84d00ff1638
Author: Mai Lavelle
Date:   Mon Nov 27 00:47:24 2017 -0500
Branches: split-kernel-faster-building
https://developer.blender.org/rB7fdc17434e386b29fd446e4dc066c84d00ff1638

Cycles: Fix mistake with ShaderEvalTask that could lead to crash

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

M	intern/cycles/kernel/split/kernel_shader_eval.h
M	intern/cycles/kernel/split/kernel_split_common.h
M	intern/cycles/kernel/split/kernel_split_data_types.h

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

diff --git a/intern/cycles/kernel/split/kernel_shader_eval.h b/intern/cycles/kernel/split/kernel_shader_eval.h
index f095b4f84ee..c53807f4e09 100644
--- a/intern/cycles/kernel/split/kernel_shader_eval.h
+++ b/intern/cycles/kernel/split/kernel_shader_eval.h
@@ -42,7 +42,7 @@ ccl_device void kernel_shader_eval(KernelGlobals *kg)
 
 	if(IS_STATE(kernel_split_state.ray_state, ray_index, shade_state)) {
 		ShaderEvalTask *eval_task = &kernel_split_state.shader_eval_task[ray_index];
-		ShaderData *sd = (ShaderData*)(((ccl_global char*)&kernel_split_state) + eval_task->sd_offset);
+		ShaderData *sd = (ShaderData*)(kernel_split_state.data + eval_task->sd_offset);
 		ccl_global PathState *state = &kernel_split_state.path_state[ray_index];
 
 		shader_eval(kg, sd, state, eval_task->intent);
diff --git a/intern/cycles/kernel/split/kernel_split_common.h b/intern/cycles/kernel/split/kernel_split_common.h
index c2c92ea142d..093bcaa84ea 100644
--- a/intern/cycles/kernel/split/kernel_split_common.h
+++ b/intern/cycles/kernel/split/kernel_split_common.h
@@ -56,7 +56,7 @@ CCL_NAMESPACE_BEGIN
 
 ccl_device void shader_eval_task_setup(KernelGlobals *kg, ShaderEvalTask *task, ShaderData *sd, ShaderEvalIntent intent) {
 	task->intent = intent;
-	task->sd_offset = ((ccl_global char*)sd) - ((ccl_global char*)&kernel_split_state);
+	task->sd_offset = ((ccl_global char*)sd) - kernel_split_state.data;
 }
 
 ccl_device_inline void kernel_split_path_end(KernelGlobals *kg, int ray_index)
diff --git a/intern/cycles/kernel/split/kernel_split_data_types.h b/intern/cycles/kernel/split/kernel_split_data_types.h
index d7731441089..dab0bf72fcf 100644
--- a/intern/cycles/kernel/split/kernel_split_data_types.h
+++ b/intern/cycles/kernel/split/kernel_split_data_types.h
@@ -111,6 +111,7 @@ typedef ccl_global struct SplitBranchedState {
 #endif /* __VOLUME__ */
 
 #define SPLIT_DATA_ENTRIES \
+	SPLIT_DATA_ENTRY(ccl_global char, data, 0) \
 	SPLIT_DATA_ENTRY(ccl_global float3, throughput, 1) \
 	SPLIT_DATA_ENTRY(PathRadiance, path_radiance, 1) \
 	SPLIT_DATA_ENTRY(ccl_global Ray, ray, 1) \



More information about the Bf-blender-cvs mailing list