[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57550] trunk/blender/intern/cycles: Cycles: attempt to fix internal compile error with some visual studio builds

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Jun 18 15:19:17 CEST 2013


Revision: 57550
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57550
Author:   blendix
Date:     2013-06-18 13:19:16 +0000 (Tue, 18 Jun 2013)
Log Message:
-----------
Cycles: attempt to fix internal compile error with some visual studio builds

Modified Paths:
--------------
    trunk/blender/intern/cycles/CMakeLists.txt
    trunk/blender/intern/cycles/SConscript
    trunk/blender/intern/cycles/bvh/bvh.cpp
    trunk/blender/intern/cycles/kernel/kernel_jitter.h
    trunk/blender/intern/cycles/util/util_math.h
    trunk/blender/intern/cycles/util/util_types.h

Modified: trunk/blender/intern/cycles/CMakeLists.txt
===================================================================
--- trunk/blender/intern/cycles/CMakeLists.txt	2013-06-18 12:32:43 UTC (rev 57549)
+++ trunk/blender/intern/cycles/CMakeLists.txt	2013-06-18 13:19:16 UTC (rev 57550)
@@ -13,9 +13,10 @@
 endif()
 
 if(WIN32 AND MSVC)
-	set(CYCLES_SSE2_KERNEL_FLAGS "/arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc")
-	set(CYCLES_SSE3_KERNEL_FLAGS "/arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc")
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast -D_CRT_SECURE_NO_WARNINGS /EHsc")
+	set(CYCLES_SSE2_KERNEL_FLAGS "/arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc /Ox /GS-")
+	# there is no /arch:SSE3, but intrinsics are available anyway
+	set(CYCLES_SSE3_KERNEL_FLAGS "/arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc /Ox /GS-")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast -D_CRT_SECURE_NO_WARNINGS /EHsc /Ox /GS-")
 elseif(CMAKE_COMPILER_IS_GNUCC)
 	set(CYCLES_SSE2_KERNEL_FLAGS "-ffast-math -msse -msse2 -mfpmath=sse")
 	set(CYCLES_SSE3_KERNEL_FLAGS "-ffast-math -msse -msse2 -msse3 -mssse3 -mfpmath=sse")

Modified: trunk/blender/intern/cycles/SConscript
===================================================================
--- trunk/blender/intern/cycles/SConscript	2013-06-18 12:32:43 UTC (rev 57549)
+++ trunk/blender/intern/cycles/SConscript	2013-06-18 13:19:16 UTC (rev 57550)
@@ -79,11 +79,12 @@
     sse3_cxxflags = Split(env['CXXFLAGS'])
 
     if env['OURPLATFORM'] == 'win32-vc':
-        sse2_cxxflags.append('/arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc'.split())
-        sse3_cxxflags.append('/arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc'.split())
+        sse2_cxxflags.append('/arch:SSE /arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc /Ox /Gs-'.split())
+        # there is no /arch:SSE3, but intrinsics are available anyway
+        sse3_cxxflags.append('/arch:SSE /arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc /Ox /Gs-'.split())
     elif env['OURPLATFORM'] == 'win64-vc':
-        sse2_cxxflags.append('-D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc'.split())
-        sse3_cxxflags.append('-D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc'.split())
+        sse2_cxxflags.append('-D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc /Ox /Gs-'.split())
+        sse3_cxxflags.append('-D_CRT_SECURE_NO_WARNINGS /fp:fast /EHsc /Ox /Gs-'.split())
     else:
         sse2_cxxflags.append('-ffast-math -msse -msse2 -mfpmath=sse'.split())
         sse3_cxxflags.append('-ffast-math -msse -msse2 -msse3 -mssse3 -mfpmath=sse'.split())

Modified: trunk/blender/intern/cycles/bvh/bvh.cpp
===================================================================
--- trunk/blender/intern/cycles/bvh/bvh.cpp	2013-06-18 12:32:43 UTC (rev 57549)
+++ trunk/blender/intern/cycles/bvh/bvh.cpp	2013-06-18 13:19:16 UTC (rev 57550)
@@ -579,6 +579,7 @@
 	int nextNodeIdx = 0;
 
 	vector<BVHStackEntry> stack;
+	stack.reserve(BVHParams::MAX_DEPTH*2);
 	stack.push_back(BVHStackEntry(root, nextNodeIdx++));
 
 	while(stack.size()) {
@@ -776,6 +777,7 @@
 	int nextNodeIdx = 0;
 
 	vector<BVHStackEntry> stack;
+	stack.reserve(BVHParams::MAX_DEPTH*2);
 	stack.push_back(BVHStackEntry(root, nextNodeIdx++));
 
 	while(stack.size()) {

Modified: trunk/blender/intern/cycles/kernel/kernel_jitter.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_jitter.h	2013-06-18 12:32:43 UTC (rev 57549)
+++ trunk/blender/intern/cycles/kernel/kernel_jitter.h	2013-06-18 13:19:16 UTC (rev 57550)
@@ -37,7 +37,7 @@
 /* a must be > 0 and b must be > 1 */
 __device_inline int cmj_fast_div_pow2(int a, int b)
 {
-#ifdef __KERNEL_SSE2__
+#if defined(__KERNEL_SSE2__) && !defined(_MSC_VER)
 	return a >> __builtin_ctz(b);
 #else
 	return a/b;
@@ -46,7 +46,7 @@
 
 __device_inline uint cmj_w_mask(uint w)
 {
-#ifdef __KERNEL_SSE2__
+#if defined(__KERNEL_SSE2__) && !defined(_MSC_VER)
 	return ((1 << (32 - __builtin_clz(w))) - 1);
 #else
 	w |= w >> 1;

Modified: trunk/blender/intern/cycles/util/util_math.h
===================================================================
--- trunk/blender/intern/cycles/util/util_math.h	2013-06-18 12:32:43 UTC (rev 57549)
+++ trunk/blender/intern/cycles/util/util_math.h	2013-06-18 13:19:16 UTC (rev 57550)
@@ -165,7 +165,7 @@
 
 __device_inline int float_to_int(float f)
 {
-#ifdef __KERNEL_SSE2__
+#if defined(__KERNEL_SSE2__) && !defined(_MSC_VER)
 	return _mm_cvtt_ss2si(_mm_load_ss(&f));
 #else
 	return (int)f;

Modified: trunk/blender/intern/cycles/util/util_types.h
===================================================================
--- trunk/blender/intern/cycles/util/util_types.h	2013-06-18 12:32:43 UTC (rev 57549)
+++ trunk/blender/intern/cycles/util/util_types.h	2013-06-18 13:19:16 UTC (rev 57550)
@@ -23,11 +23,6 @@
 
 #include <stdlib.h>
 
-	// Needed for _BistScanForward and _BitScanReverse on MSVC 2012 
-#	if defined(_MSC_VER) && _MSC_VER >= 1700
-#		include <intrin.h>
-#	endif
-
 #endif
 
 /* Qualifiers for kernel code shared by CPU and GPU */
@@ -511,26 +506,6 @@
 }
 #endif
 
-#if defined(__KERNEL_SSE2__) && defined(_MSC_VER)
-
-/* count zeros from start or end of integer bits */
-
-__device_inline uint32_t __builtin_ctz(uint32_t i)
-{
-	unsigned long r = 0;
-	_BitScanForward(&r, i);
-	return (uint32_t)r;
-}
-
-__device_inline uint32_t __builtin_clz(uint32_t i)
-{
-	unsigned long r = 0;
-	_BitScanReverse(&r, i);
-	return (uint32_t)r;
-}
-
-#endif
-
 CCL_NAMESPACE_END
 
 #endif /* __UTIL_TYPES_H__ */




More information about the Bf-blender-cvs mailing list