Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/device/device_cpu.cpp
| Show First 20 Lines • Show All 327 Lines • ▼ Show 20 Lines | #endif | ||||
| void thread_shader(DeviceTask& task) | void thread_shader(DeviceTask& task) | ||||
| { | { | ||||
| KernelGlobals kg = kernel_globals; | KernelGlobals kg = kernel_globals; | ||||
| #ifdef WITH_OSL | #ifdef WITH_OSL | ||||
| OSLShader::thread_init(&kg, &kernel_globals, &osl_globals); | OSLShader::thread_init(&kg, &kernel_globals, &osl_globals); | ||||
| #endif | #endif | ||||
| void(*shader_kernel)(KernelGlobals*, uint4*, float4*, int, int, int, int); | void(*shader_kernel)(KernelGlobals*, uint4*, float4*, int, Transform *tfm, int, int, int); | ||||
| #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX2 | #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX2 | ||||
| if(system_cpu_support_avx2()) | if(system_cpu_support_avx2()) | ||||
| shader_kernel = kernel_cpu_avx2_shader; | shader_kernel = kernel_cpu_avx2_shader; | ||||
| else | else | ||||
| #endif | #endif | ||||
| #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX | #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX | ||||
| if(system_cpu_support_avx()) | if(system_cpu_support_avx()) | ||||
| Show All 15 Lines | if(system_cpu_support_sse2()) | ||||
| shader_kernel = kernel_cpu_sse2_shader; | shader_kernel = kernel_cpu_sse2_shader; | ||||
| else | else | ||||
| #endif | #endif | ||||
| shader_kernel = kernel_cpu_shader; | shader_kernel = kernel_cpu_shader; | ||||
| for(int sample = 0; sample < task.num_samples; sample++) { | for(int sample = 0; sample < task.num_samples; sample++) { | ||||
| for(int x = task.shader_x; x < task.shader_x + task.shader_w; x++) | for(int x = task.shader_x; x < task.shader_x + task.shader_w; x++) | ||||
| shader_kernel(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, | shader_kernel(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, | ||||
| task.shader_eval_type, x, task.offset, sample); | task.shader_eval_type, task.tfm, x, task.offset, sample); | ||||
| if(task.get_cancel() || task_pool.canceled()) | if(task.get_cancel() || task_pool.canceled()) | ||||
| break; | break; | ||||
| task.update_progress(NULL); | task.update_progress(NULL); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 71 Lines • Show Last 20 Lines | |||||