From 8f8b9b58f6650e104a04670f43d2ef81f861efcd Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Wed, 12 Nov 2014 11:51:49 +0100 Subject: Fix T41066: MSVC + AVX2 kernel causes artifacts in hair render. The issue lies in the FMA functions, so disable them on Windows for now. --- intern/cycles/kernel/kernel_types.h | 4 ++-- intern/cycles/util/util_ssef.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h index 7d9bebf5614..25b13f74b30 100644 --- a/intern/cycles/kernel/kernel_types.h +++ b/intern/cycles/kernel/kernel_types.h @@ -543,7 +543,7 @@ typedef enum AttributeStandard { * could be simply a compilers bug for which we can't find a generic * platform independent workaround. Also even if it's a compiler * issue, it's not so simple to upgrade the compiler in the release - * environment for linux and doing it so closer to the release is + * environment for Linux and doing it so closer to the release is * rather a risky business. * * For this release it's probably safer to stick with such a rather @@ -997,7 +997,7 @@ typedef struct KernelData { #ifdef __KERNEL_DEBUG__ typedef struct DebugData { - // Total number of BVH node travesal steps and primitives intersections + // Total number of BVH node traversal steps and primitives intersections // for the camera rays. int num_bvh_traversal_steps; } DebugData; diff --git a/intern/cycles/util/util_ssef.h b/intern/cycles/util/util_ssef.h index f4236cc616e..5e452ea03b4 100644 --- a/intern/cycles/util/util_ssef.h +++ b/intern/cycles/util/util_ssef.h @@ -151,7 +151,7 @@ __forceinline ssef maxi(const ssef& a, const ssef& b) { /// Ternary Operators //////////////////////////////////////////////////////////////////////////////// -#if defined(__KERNEL_AVX2__) +#if defined(__KERNEL_AVX2__) && !defined(_MSC_VER) // see T41066 __forceinline const ssef madd (const ssef& a, const ssef& b, const ssef& c) { return _mm_fmadd_ps(a,b,c); } __forceinline const ssef msub (const ssef& a, const ssef& b, const ssef& c) { return _mm_fmsub_ps(a,b,c); } __forceinline const ssef nmadd(const ssef& a, const ssef& b, const ssef& c) { return _mm_fnmadd_ps(a,b,c); } -- cgit v1.2.3