diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-10-05 23:56:34 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-10-05 23:56:34 +0400 |
commit | e9d03296c7cbff8e20a61359d858642126621669 (patch) | |
tree | 4a16060cd97ceaca22d5b7f5a63d517703a52793 | |
parent | c7882ec3bb4d6895414ed7a0623074c16201284e (diff) |
Better fix for #36935 and 36316:
* 32 bit GCC builds now have the SSE BVH optimizations turned off, but still
compile with SSE flags for better performance.
* White color when rendering on Windows seems to have been unrelated to SSE,
rather it was a graphics driver not supporting half float textures, added a
check for that now.
-rw-r--r-- | intern/cycles/blender/blender_sync.cpp | 3 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_sse2.cpp | 3 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_sse3.cpp | 3 | ||||
-rw-r--r-- | intern/cycles/util/util_opengl.h | 5 | ||||
-rw-r--r-- | intern/cycles/util/util_system.cpp | 3 |
5 files changed, 9 insertions, 8 deletions
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 337d075cce4..a349ddc5c3f 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -34,6 +34,7 @@ #include "util_debug.h" #include "util_foreach.h" +#include "util_opengl.h" CCL_NAMESPACE_BEGIN @@ -494,7 +495,7 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine b_engine, BL::Use params.shadingsystem = SessionParams::OSL; /* color managagement */ - params.display_buffer_linear = b_engine.support_display_space_shader(b_scene); + params.display_buffer_linear = GLEW_ARB_half_float_pixel && b_engine.support_display_space_shader(b_scene); return params; } diff --git a/intern/cycles/kernel/kernel_sse2.cpp b/intern/cycles/kernel/kernel_sse2.cpp index 862626d6899..9c69e519dca 100644 --- a/intern/cycles/kernel/kernel_sse2.cpp +++ b/intern/cycles/kernel/kernel_sse2.cpp @@ -20,7 +20,10 @@ #ifdef WITH_OPTIMIZED_KERNEL +/* SSE optimization disabled for now on 32 bit, see bug #36316 */ +#if !(defined(__GNUC__) && (defined(i386) || defined(_M_IX86))) #define __KERNEL_SSE2__ +#endif #include "kernel.h" #include "kernel_compat_cpu.h" diff --git a/intern/cycles/kernel/kernel_sse3.cpp b/intern/cycles/kernel/kernel_sse3.cpp index c44098606a5..05877a41b4a 100644 --- a/intern/cycles/kernel/kernel_sse3.cpp +++ b/intern/cycles/kernel/kernel_sse3.cpp @@ -20,9 +20,12 @@ #ifdef WITH_OPTIMIZED_KERNEL +/* SSE optimization disabled for now on 32 bit, see bug #36316 */ +#if !(defined(__GNUC__) && (defined(i386) || defined(_M_IX86))) #define __KERNEL_SSE2__ #define __KERNEL_SSE3__ #define __KERNEL_SSSE3__ +#endif #include "kernel.h" #include "kernel_compat_cpu.h" diff --git a/intern/cycles/util/util_opengl.h b/intern/cycles/util/util_opengl.h index 07a296ed1e6..04a3e039c9d 100644 --- a/intern/cycles/util/util_opengl.h +++ b/intern/cycles/util/util_opengl.h @@ -20,12 +20,7 @@ /* OpenGL header includes, used everywhere we use OpenGL, to deal with * platform differences in one central place. */ -#ifdef __APPLE__ -#include <OpenGL/gl.h> -#include <OpenGL/glu.h> -#else #include <GL/glew.h> -#endif #endif /* __UTIL_OPENGL_H__ */ diff --git a/intern/cycles/util/util_system.cpp b/intern/cycles/util/util_system.cpp index 2bb15b9074a..345c76bdfab 100644 --- a/intern/cycles/util/util_system.cpp +++ b/intern/cycles/util/util_system.cpp @@ -116,8 +116,7 @@ int system_cpu_bits() return (sizeof(void*)*8); } -/* SSE optimization disabled for now on 32 bit, see bug #36316 and #36935 */ -#if defined(__x86_64__) || defined(_M_X64) // ((defined(i386) || defined(_M_IX86)) +#if defined(__x86_64__) || defined(_M_X64) || defined(i386) || defined(_M_IX86) struct CPUCapabilities { bool x64; |