Fix/Workaround T46412: Defocus node not working on Windows 32 bit
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 28 Jan 2016 10:39:17 +0000 (11:39 +0100)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 28 Jan 2016 10:39:17 +0000 (11:39 +0100)
The issue was caused by some functions in compositor returning
garbage values. Partially the issue was caused by vc12_xp toolset
we're using, but even with regular vc120 toolset nodes like bokeh
image did not work correct.

This is a bit weird solution, which could indicate some sort
of compiler bug, but is also actually makes sense because we do
use SSE intrinsics in the compositor now. Maybe it all gets
interfered in some way.

In any case, if someone wants to find a real solution for the
issue please go ahead.

This shouldn't have affect on supported platform because we
already demand CPU to have SSE2 support.

source/blender/compositor/CMakeLists.txt

index 9ecbab4dba05cb7585f56fc67b8529a2eaa43b94..f0ac709e7641e874e47ccc533679d870ce3b98d0 100644 (file)
@@ -547,6 +547,11 @@ if(WITH_COMPOSITOR_WERROR)
        ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS C_WERROR -Werror)
 endif()
 
        ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS C_WERROR -Werror)
 endif()
 
+if(MSVC)
+       set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2")
+       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2")
+endif()
+
 data_to_c(${CMAKE_CURRENT_SOURCE_DIR}/operations/COM_OpenCLKernels.cl
           ${CMAKE_CURRENT_BINARY_DIR}/operations/COM_OpenCLKernels.cl.h SRC)
 
 data_to_c(${CMAKE_CURRENT_SOURCE_DIR}/operations/COM_OpenCLKernels.cl
           ${CMAKE_CURRENT_BINARY_DIR}/operations/COM_OpenCLKernels.cl.h SRC)