blender/intern/cycles/util
lazydodo b332fc8f23 [Cycles/msvc] Get cycles_kernel compile time under control.
Ever since we merged the extra texture types (half etc) and spit kernel the compile time for cycles_kernel has been going out of control.

It's currently sitting at a cool 1295.762 seconds with our standard compiler (2013/x64/release)

I'm not entirely sure why msvc gets upset with it, but the inlining of matrix near the bottom of the tri-cubic 3d interpolator is the source of the issue, this patch excludes it from being inlined.

This patch bring it back down to a manageable 186 seconds. (7x faster!!)

with the attached bzzt.blend that @sergey  kindly provided i got the following results with builds with identical hashes

58:51.73 buildbot
58:04.23 Patched

it's really close, the slight speedup could be explained by the switch instead of having multiple if's (switches do generate more optimal code than a chain of if/else/if/else statements) but in all honesty it might just have been pure luck (dev box,very polluted, bad for benchmarks) regardless, this patch doesn't seem to slow down anything with my limited testing.

{F532336}

{F532337}

Reviewers: brecht, lukasstockner97, juicyfruit, dingto, sergey

Reviewed By: brecht, dingto, sergey

Subscribers: InsigMathK, sergey

Tags: #cycles

Differential Revision: https://developer.blender.org/D2595
2017-04-07 10:26:55 -06:00
..
CMakeLists.txt Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_algorithm.h Cleanup: Fix Cycles Apache header. 2014-12-25 02:50:24 +01:00
util_aligned_malloc.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_aligned_malloc.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_args.h Cleanup: Fix Cycles Apache header. 2014-12-25 02:50:24 +01:00
util_atomic.h Cycles: Add more atomic operations 2017-03-08 00:52:41 -05:00
util_avxf.h Cycles: Add AVX intrinsics helpers 2016-12-02 12:23:38 +01:00
util_boundbox.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_color.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_debug.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_debug.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_foreach.h Optionally use c++11 stuff instead of boost in cycles where possible. We do and continue to depend on boost though 2015-03-29 22:12:40 +02:00
util_function.h Cycles: Correction to previous commit: non-msvc compilers also should use nullptr 2015-03-30 15:17:09 +05:00
util_guarded_allocator.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_guarded_allocator.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_half.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_hash.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_image_impl.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_image.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_list.h Cleanup: Fix Cycles Apache header. 2014-12-25 02:50:24 +01:00
util_logging.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_logging.h Cycles: Report device maximum allocation and detected global size 2017-03-08 00:52:41 -05:00
util_map.h Optionally use c++11 stuff instead of boost in cycles where possible. We do and continue to depend on boost though 2015-03-29 22:12:40 +02:00
util_math_cdf.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_math_cdf.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_math_fast.h Cycles: Fix three numerical issues in the fresnel, normal map and Beckmann code 2016-07-16 20:54:14 +02:00
util_math_intersect.h Cycles: Attempt to workaround compilation error on new CUDA toolkit and sm_2x 2017-03-29 11:50:17 +02:00
util_math.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_md5.cpp Cycles: Cleanup, indentation and braces 2016-02-03 15:00:55 +01:00
util_md5.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_opengl.h Cycles: Post-reintegration tweaks to ensure things do compile 2015-01-01 01:31:08 +05:00
util_optimization.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_param.h Cleanup: Fix Cycles Apache header. 2014-12-25 02:50:24 +01:00
util_path.cpp Cycles: More fixes after include changes 2017-03-31 10:12:13 +02:00
util_path.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_progress.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_queue.h Cycles: Avoid recursion when doing constant fold 2015-12-02 16:19:39 +05:00
util_set.h Cycles: Re-implement some utilities to avoid use of boost 2016-02-06 19:19:20 +01:00
util_simd.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_simd.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_sky_model_data.h Cleanup: Move Cycles sky model data to util. 2016-02-13 13:41:40 +01:00
util_sky_model.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_sky_model.h Cleanup: Move Cycles sky model data to util. 2016-02-13 13:41:40 +01:00
util_sseb.h Cycles: add better specializations for SSE shuffle function and few more wrappers. 2015-03-07 17:25:21 +00:00
util_ssef.h Cycles: Fix strict -Wpedantic warnings with GCC 2017-03-06 14:18:26 +01:00
util_ssei.h Cycles: add better specializations for SSE shuffle function and few more wrappers. 2015-03-07 17:25:21 +00:00
util_stack_allocator.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_static_assert.h Cycles: Fix compilation warning with CUDA on OSX 2017-02-24 14:33:10 +01:00
util_stats.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_string.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_string.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_system.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_system.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_task.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_task.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_texture.h Cycles: Add single channel texture support for OpenCL. 2016-08-14 20:21:08 +02:00
util_thread.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_thread.h Cycles: Add utility class to simplify scoped spin locks 2017-04-05 14:57:34 +02:00
util_time.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_time.h Cycles: Refactor Progress system to provide better estimates 2016-12-03 05:02:21 +01:00
util_transform.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_transform.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_types.h [Cycles/msvc] Get cycles_kernel compile time under control. 2017-04-07 10:26:55 -06:00
util_vector.h Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_version.h Cycles: Update current Cycles version 2017-01-23 10:25:59 +01:00
util_view.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_view.h Cleanup: Fix Cycles Apache header. 2014-12-25 02:50:24 +01:00
util_windows.cpp Cycles: Make all #include statements relative to cycles source directory 2017-03-29 13:41:11 +02:00
util_windows.h Fix T50034: Blender changes processor affinity unauthorized 2016-11-22 16:03:16 +01:00
util_xml.h Cycles: Fix compilation error when OIIO is compiled with external PugiXML parser 2015-01-01 01:31:07 +05:00