Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/device/device_cpu.cpp
| Show First 20 Lines • Show All 429 Lines • ▼ Show 20 Lines | |||||
| #ifdef WITH_OSL | #ifdef WITH_OSL | ||||
| OSLShader::thread_init(&kg, &kernel_globals, &osl_globals); | OSLShader::thread_init(&kg, &kernel_globals, &osl_globals); | ||||
| #endif | #endif | ||||
| #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX2 | #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX2 | ||||
| if(system_cpu_support_avx2()) { | if(system_cpu_support_avx2()) { | ||||
| 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++) | ||||
| kernel_cpu_avx2_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, task.shader_eval_type, x, sample); | kernel_cpu_avx2_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, | ||||
| task.shader_eval_type, 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); | ||||
| } | } | ||||
| } | } | ||||
| 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()) { | ||||
| 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++) | ||||
| kernel_cpu_avx_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, task.shader_eval_type, x, sample); | kernel_cpu_avx_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, | ||||
| task.shader_eval_type, 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); | ||||
| } | } | ||||
| } | } | ||||
| else | else | ||||
| #endif | #endif | ||||
| #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE41 | #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE41 | ||||
| if(system_cpu_support_sse41()) { | if(system_cpu_support_sse41()) { | ||||
| 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++) | ||||
| kernel_cpu_sse41_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, task.shader_eval_type, x, sample); | kernel_cpu_sse41_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, | ||||
| task.shader_eval_type, 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); | ||||
| } | } | ||||
| } | } | ||||
| else | else | ||||
| #endif | #endif | ||||
| #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE3 | #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE3 | ||||
| if(system_cpu_support_sse3()) { | if(system_cpu_support_sse3()) { | ||||
| 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++) | ||||
| kernel_cpu_sse3_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, task.shader_eval_type, x, sample); | kernel_cpu_sse3_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, | ||||
| task.shader_eval_type, 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); | ||||
| } | } | ||||
| } | } | ||||
| else | else | ||||
| #endif | #endif | ||||
| #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE2 | #ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE2 | ||||
| if(system_cpu_support_sse2()) { | if(system_cpu_support_sse2()) { | ||||
| 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++) | ||||
| kernel_cpu_sse2_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, task.shader_eval_type, x, sample); | kernel_cpu_sse2_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, | ||||
| task.shader_eval_type, 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); | ||||
| } | } | ||||
| } | } | ||||
| else | else | ||||
| #endif | #endif | ||||
| { | { | ||||
| 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++) | ||||
| kernel_cpu_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, task.shader_eval_type, x, sample); | kernel_cpu_shader(&kg, (uint4*)task.shader_input, (float4*)task.shader_output, | ||||
| task.shader_eval_type, 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 59 Lines • Show Last 20 Lines | |||||