From 7fdc17434e386b29fd446e4dc066c84d00ff1638 Mon Sep 17 00:00:00 2001 From: Mai Lavelle Date: Mon, 27 Nov 2017 00:47:24 -0500 Subject: Cycles: Fix mistake with ShaderEvalTask that could lead to crash --- intern/cycles/kernel/split/kernel_shader_eval.h | 2 +- intern/cycles/kernel/split/kernel_split_common.h | 2 +- intern/cycles/kernel/split/kernel_split_data_types.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) 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) \ -- cgit v1.2.3