[Bf-blender-cvs] [f7cc97e8cf5] split-kernel-faster-building: Cycles: Add shader_eval_state to allow eval of ray states besides RAY_ACTIVE
Mai Lavelle
noreply at git.blender.org
Tue Nov 14 07:54:18 CET 2017
Commit: f7cc97e8cf57806505fced4e79fff7f2a883d43c
Author: Mai Lavelle
Date: Tue Nov 14 01:26:53 2017 -0500
Branches: split-kernel-faster-building
https://developer.blender.org/rBf7cc97e8cf57806505fced4e79fff7f2a883d43c
Cycles: Add shader_eval_state to allow eval of ray states besides RAY_ACTIVE
===================================================================
M intern/cycles/kernel/split/kernel_direct_lighting.h
M intern/cycles/kernel/split/kernel_shader_eval.h
M intern/cycles/kernel/split/kernel_shader_sort.h
M intern/cycles/kernel/split/kernel_split_data_types.h
===================================================================
diff --git a/intern/cycles/kernel/split/kernel_direct_lighting.h b/intern/cycles/kernel/split/kernel_direct_lighting.h
index 4dea050c89f..57f92d9d822 100644
--- a/intern/cycles/kernel/split/kernel_direct_lighting.h
+++ b/intern/cycles/kernel/split/kernel_direct_lighting.h
@@ -123,6 +123,7 @@ ccl_device void kernel_direct_lighting(KernelGlobals *kg,
if(ccl_global_id(1) * ccl_global_size(0) + ccl_global_id(0) == 0) {
kernel_split_params.shader_eval_queue = QUEUE_SHADOW_RAY_CAST_DL_RAYS;
+ kernel_split_params.shader_eval_state = RAY_ACTIVE;
}
#endif
diff --git a/intern/cycles/kernel/split/kernel_shader_eval.h b/intern/cycles/kernel/split/kernel_shader_eval.h
index e72c483c6ca..c95e625b840 100644
--- a/intern/cycles/kernel/split/kernel_shader_eval.h
+++ b/intern/cycles/kernel/split/kernel_shader_eval.h
@@ -24,6 +24,7 @@ ccl_device void kernel_shader_eval(KernelGlobals *kg)
int ray_index = ccl_global_id(1) * ccl_global_size(0) + ccl_global_id(0);
int queue = kernel_split_params.shader_eval_queue;
+ int shade_state = kernel_split_params.shader_eval_state;
int queue_index = kernel_split_params.queue_index[queue];
if(ray_index >= queue_index) {
@@ -39,7 +40,7 @@ ccl_device void kernel_shader_eval(KernelGlobals *kg)
return;
}
- if(IS_STATE(kernel_split_state.ray_state, ray_index, RAY_ACTIVE)) {
+ 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);
ccl_global PathState *state = &kernel_split_state.path_state[ray_index];
diff --git a/intern/cycles/kernel/split/kernel_shader_sort.h b/intern/cycles/kernel/split/kernel_shader_sort.h
index 7e3e3ca92b4..2accd8f938b 100644
--- a/intern/cycles/kernel/split/kernel_shader_sort.h
+++ b/intern/cycles/kernel/split/kernel_shader_sort.h
@@ -25,12 +25,14 @@ ccl_device void kernel_shader_sort(KernelGlobals *kg,
/* Sorting on cuda split is not implemented */
if(tid == 0) {
kernel_split_params.shader_eval_queue = QUEUE_ACTIVE_AND_REGENERATED_RAYS;
+ kernel_split_params.shader_eval_state = RAY_ACTIVE;
}
#else
uint qsize = kernel_split_params.queue_index[QUEUE_ACTIVE_AND_REGENERATED_RAYS];
if(tid == 0) {
kernel_split_params.queue_index[QUEUE_SHADER_SORTED_RAYS] = qsize;
kernel_split_params.shader_eval_queue = QUEUE_SHADER_SORTED_RAYS;
+ kernel_split_params.shader_eval_state = RAY_ACTIVE;
}
uint offset = (tid/SHADER_SORT_LOCAL_SIZE)*SHADER_SORT_BLOCK_SIZE;
diff --git a/intern/cycles/kernel/split/kernel_split_data_types.h b/intern/cycles/kernel/split/kernel_split_data_types.h
index 8698ae7e9d5..1589f929f22 100644
--- a/intern/cycles/kernel/split/kernel_split_data_types.h
+++ b/intern/cycles/kernel/split/kernel_split_data_types.h
@@ -33,6 +33,7 @@ typedef struct SplitParams {
/* queue for kernel_shader_eval */
QueueNumber shader_eval_queue;
+ char shader_eval_state;
/* Place for storing sd->flag. AMD GPU OpenCL compiler workaround */
int dummy_sd_flag;
More information about the Bf-blender-cvs
mailing list