forked from bartvdbraak/blender
Cycles: Fix handling of barriers
This commit is contained in:
parent
b27e224276
commit
60a344b43d
@ -32,11 +32,6 @@
|
|||||||
# define ccl_addr_space
|
# define ccl_addr_space
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__SPLIT_KERNEL__) && !defined(__COMPUTE_DEVICE_GPU__)
|
|
||||||
/* TODO(mai): need to investigate how this effects the kernel, as cpu kernel crashes without this right now */
|
|
||||||
#define __COMPUTE_DEVICE_GPU__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CCL_NAMESPACE_BEGIN
|
CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
/* constants */
|
/* constants */
|
||||||
|
@ -38,11 +38,11 @@ ccl_device void kernel_shader_eval(KernelGlobals *kg,
|
|||||||
kernel_split_params.queue_size,
|
kernel_split_params.queue_size,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
if(ray_index == QUEUE_EMPTY_SLOT) {
|
char enqueue_flag = 0;
|
||||||
return;
|
if((ray_index != QUEUE_EMPTY_SLOT) && IS_STATE(kernel_split_state.ray_state, ray_index, RAY_TO_REGENERATE)) {
|
||||||
|
enqueue_flag = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
char enqueue_flag = (IS_STATE(kernel_split_state.ray_state, ray_index, RAY_TO_REGENERATE)) ? 1 : 0;
|
|
||||||
enqueue_ray_index_local(ray_index,
|
enqueue_ray_index_local(ray_index,
|
||||||
QUEUE_HITBG_BUFF_UPDATE_TOREGEN_RAYS,
|
QUEUE_HITBG_BUFF_UPDATE_TOREGEN_RAYS,
|
||||||
enqueue_flag,
|
enqueue_flag,
|
||||||
@ -52,7 +52,7 @@ ccl_device void kernel_shader_eval(KernelGlobals *kg,
|
|||||||
kernel_split_params.queue_index);
|
kernel_split_params.queue_index);
|
||||||
|
|
||||||
/* Continue on with shader evaluation. */
|
/* Continue on with shader evaluation. */
|
||||||
if(IS_STATE(kernel_split_state.ray_state, ray_index, RAY_ACTIVE)) {
|
if((ray_index != QUEUE_EMPTY_SLOT) && IS_STATE(kernel_split_state.ray_state, ray_index, RAY_ACTIVE)) {
|
||||||
Intersection isect = kernel_split_state.isect[ray_index];
|
Intersection isect = kernel_split_state.isect[ray_index];
|
||||||
ccl_global uint *rng = &kernel_split_state.rng[ray_index];
|
ccl_global uint *rng = &kernel_split_state.rng[ray_index];
|
||||||
ccl_global PathState *state = &kernel_split_state.path_state[ray_index];
|
ccl_global PathState *state = &kernel_split_state.path_state[ray_index];
|
||||||
|
@ -46,12 +46,12 @@ ccl_device void kernel_subsurface_scatter(KernelGlobals *kg,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
char enqueue_flag = 0;
|
||||||
|
|
||||||
#ifndef __COMPUTE_DEVICE_GPU__
|
#ifndef __COMPUTE_DEVICE_GPU__
|
||||||
if(ray_index != QUEUE_EMPTY_SLOT) {
|
if(ray_index != QUEUE_EMPTY_SLOT) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
char enqueue_flag = 0;
|
|
||||||
ccl_global char *ray_state = kernel_split_state.ray_state;
|
ccl_global char *ray_state = kernel_split_state.ray_state;
|
||||||
ccl_global PathState *state = &kernel_split_state.path_state[ray_index];
|
ccl_global PathState *state = &kernel_split_state.path_state[ray_index];
|
||||||
PathRadiance *L = &kernel_split_state.path_radiance[ray_index];
|
PathRadiance *L = &kernel_split_state.path_radiance[ray_index];
|
||||||
|
Loading…
Reference in New Issue
Block a user