17 #ifndef __KERNEL_SPLIT_DATA_TYPES_H__
18 #define __KERNEL_SPLIT_DATA_TYPES_H__
47 #ifdef __BRANCHED_PATH__
63 # ifdef __SUBSURFACE__
73 int shared_sample_count;
75 bool waiting_on_shared_samples;
78 # define SPLIT_DATA_BRANCHED_ENTRIES \
79 SPLIT_DATA_ENTRY(SplitBranchedState, branched_state, 1) \
80 SPLIT_DATA_ENTRY(ShaderData, _branched_state_sd, 0)
82 # define SPLIT_DATA_BRANCHED_ENTRIES
86 # define SPLIT_DATA_SUBSURFACE_ENTRIES \
87 SPLIT_DATA_ENTRY(ccl_global SubsurfaceIndirectRays, ss_rays, 1)
89 # define SPLIT_DATA_SUBSURFACE_ENTRIES
93 # define SPLIT_DATA_VOLUME_ENTRIES SPLIT_DATA_ENTRY(ccl_global PathState, state_shadow, 1)
95 # define SPLIT_DATA_VOLUME_ENTRIES
98 #define SPLIT_DATA_ENTRIES \
99 SPLIT_DATA_ENTRY(ccl_global float3, throughput, 1) \
100 SPLIT_DATA_ENTRY(PathRadiance, path_radiance, 1) \
101 SPLIT_DATA_ENTRY(ccl_global Ray, ray, 1) \
102 SPLIT_DATA_ENTRY(ccl_global PathState, path_state, 1) \
103 SPLIT_DATA_ENTRY(ccl_global Intersection, isect, 1) \
104 SPLIT_DATA_ENTRY(ccl_global BsdfEval, bsdf_eval, 1) \
105 SPLIT_DATA_ENTRY(ccl_global int, is_lamp, 1) \
106 SPLIT_DATA_ENTRY(ccl_global Ray, light_ray, 1) \
108 ccl_global int, queue_data, (NUM_QUEUES * 2)) \
109 SPLIT_DATA_ENTRY(ccl_global uint, buffer_offset, 1) \
110 SPLIT_DATA_ENTRY(ShaderDataTinyStorage, sd_DL_shadow, 1) \
111 SPLIT_DATA_SUBSURFACE_ENTRIES \
112 SPLIT_DATA_VOLUME_ENTRIES \
113 SPLIT_DATA_BRANCHED_ENTRIES \
114 SPLIT_DATA_ENTRY(ShaderData, _sd, 0)
118 #define SPLIT_DATA_ENTRIES_BRANCHED_SHARED \
119 SPLIT_DATA_ENTRY(ccl_global float3, throughput, 1) \
120 SPLIT_DATA_ENTRY(PathRadiance, path_radiance, 1) \
121 SPLIT_DATA_ENTRY(ccl_global Ray, ray, 1) \
122 SPLIT_DATA_ENTRY(ccl_global PathState, path_state, 1) \
123 SPLIT_DATA_ENTRY(ccl_global Intersection, isect, 1) \
124 SPLIT_DATA_ENTRY(ccl_global BsdfEval, bsdf_eval, 1) \
125 SPLIT_DATA_ENTRY(ccl_global int, is_lamp, 1) \
126 SPLIT_DATA_ENTRY(ccl_global Ray, light_ray, 1) \
127 SPLIT_DATA_ENTRY(ShaderDataTinyStorage, sd_DL_shadow, 1) \
128 SPLIT_DATA_SUBSURFACE_ENTRIES \
129 SPLIT_DATA_VOLUME_ENTRIES \
130 SPLIT_DATA_BRANCHED_ENTRIES \
131 SPLIT_DATA_ENTRY(ShaderData, _sd, 0)
135 #define SPLIT_DATA_ENTRY(type, name, num) type *name;
137 #undef SPLIT_DATA_ENTRY
146 #ifndef __KERNEL_CUDA__
147 # define kernel_split_state (kg->split_data)
148 # define kernel_split_params (kg->split_param_data)
151 # define kernel_split_state (__split_data)
153 # define kernel_split_params (__split_param_data)
156 #define kernel_split_sd(sd, ray_index) \
157 ((ShaderData *)(((ccl_global char *)kernel_split_state._##sd) + \
158 (sizeof(ShaderData) + \
159 sizeof(ShaderClosure) * (kernel_data.integrator.max_closures - 1)) * \
#define CCL_NAMESPACE_END
struct QueueEnqueueLocals QueueEnqueueLocals
struct ShaderSortLocals ShaderSortLocals
struct BackgroundAOLocals BackgroundAOLocals
struct SplitData SplitData
#define SPLIT_DATA_ENTRIES
CCL_NAMESPACE_BEGIN struct SplitParams SplitParams
__kernel void ccl_constant KernelData ccl_global void ccl_global char * ray_state
#define SHADER_SORT_BLOCK_SIZE
ushort local_index[SHADER_SORT_BLOCK_SIZE]
uint local_value[SHADER_SORT_BLOCK_SIZE]
SPLIT_DATA_ENTRIES ccl_global char * ray_state
ccl_global unsigned int * work_pools
ccl_global char * use_queues_flag
ccl_global int * queue_index