Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/integrator/shader_eval.cpp
| Show First 20 Lines • Show All 116 Lines • ▼ Show 20 Lines | tbb::parallel_for(int64_t(0), work_size, [&](int64_t work_index) { | ||||
| switch (type) { | switch (type) { | ||||
| case SHADER_EVAL_DISPLACE: | case SHADER_EVAL_DISPLACE: | ||||
| kernels.shader_eval_displace(kg, input_data, output_data, work_index); | kernels.shader_eval_displace(kg, input_data, output_data, work_index); | ||||
| break; | break; | ||||
| case SHADER_EVAL_BACKGROUND: | case SHADER_EVAL_BACKGROUND: | ||||
| kernels.shader_eval_background(kg, input_data, output_data, work_index); | kernels.shader_eval_background(kg, input_data, output_data, work_index); | ||||
| break; | break; | ||||
| case SHADER_EVAL_CURVE_SHADOW_TRANSPARENCY: | |||||
| kernels.shader_eval_curve_shadow_transparency(kg, input_data, output_data, work_index); | |||||
| break; | |||||
| } | } | ||||
| }); | }); | ||||
| }); | }); | ||||
| return success; | return success; | ||||
| } | } | ||||
| bool ShaderEval::eval_gpu(Device *device, | bool ShaderEval::eval_gpu(Device *device, | ||||
| const ShaderEvalType type, | const ShaderEvalType type, | ||||
| device_vector<KernelShaderEvalInput> &input, | device_vector<KernelShaderEvalInput> &input, | ||||
| device_vector<float> &output, | device_vector<float> &output, | ||||
| const int64_t work_size) | const int64_t work_size) | ||||
| { | { | ||||
| /* Find required kernel function. */ | /* Find required kernel function. */ | ||||
| DeviceKernel kernel; | DeviceKernel kernel; | ||||
| switch (type) { | switch (type) { | ||||
| case SHADER_EVAL_DISPLACE: | case SHADER_EVAL_DISPLACE: | ||||
| kernel = DEVICE_KERNEL_SHADER_EVAL_DISPLACE; | kernel = DEVICE_KERNEL_SHADER_EVAL_DISPLACE; | ||||
| break; | break; | ||||
| case SHADER_EVAL_BACKGROUND: | case SHADER_EVAL_BACKGROUND: | ||||
| kernel = DEVICE_KERNEL_SHADER_EVAL_BACKGROUND; | kernel = DEVICE_KERNEL_SHADER_EVAL_BACKGROUND; | ||||
| break; | break; | ||||
| case SHADER_EVAL_CURVE_SHADOW_TRANSPARENCY: | |||||
| kernel = DEVICE_KERNEL_SHADER_EVAL_CURVE_SHADOW_TRANSPARENCY; | |||||
| break; | |||||
| }; | }; | ||||
| /* Create device queue. */ | /* Create device queue. */ | ||||
| unique_ptr<DeviceQueue> queue = device->gpu_queue_create(); | unique_ptr<DeviceQueue> queue = device->gpu_queue_create(); | ||||
| queue->init_execution(); | queue->init_execution(); | ||||
| /* Execute work on GPU in chunk, so we can cancel. | /* Execute work on GPU in chunk, so we can cancel. | ||||
| * TODO : query appropriate size from device.*/ | * TODO : query appropriate size from device.*/ | ||||
| Show All 21 Lines | |||||