Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/util/util_system.cpp')
-rw-r--r--intern/cycles/util/util_system.cpp55
1 files changed, 18 insertions, 37 deletions
diff --git a/intern/cycles/util/util_system.cpp b/intern/cycles/util/util_system.cpp
index cc88320b68e..4ff0ee91d73 100644
--- a/intern/cycles/util/util_system.cpp
+++ b/intern/cycles/util/util_system.cpp
@@ -15,19 +15,20 @@
*/
#include "util_system.h"
+#include "util_debug.h"
#include "util_types.h"
#include "util_string.h"
#ifdef _WIN32
-#if(!defined(FREE_WINDOWS))
-#include <intrin.h>
-#endif
-#include <windows.h>
+# if(!defined(FREE_WINDOWS))
+# include <intrin.h>
+# endif
+# include "util_windows.h"
#elif defined(__APPLE__)
-#include <sys/sysctl.h>
-#include <sys/types.h>
+# include <sys/sysctl.h>
+# include <sys/types.h>
#else
-#include <unistd.h>
+# include <unistd.h>
#endif
CCL_NAMESPACE_BEGIN
@@ -126,29 +127,6 @@ struct CPUCapabilities {
bool bmi2;
};
-static void system_cpu_capabilities_override(CPUCapabilities *caps)
-{
- /* Only capabilities which affects on cycles kernel. */
- if(getenv("CYCLES_CPU_NO_AVX2")) {
- caps->avx2 = false;
- }
- if(getenv("CYCLES_CPU_NO_AVX")) {
- caps->avx = false;
- }
- if(getenv("CYCLES_CPU_NO_SSE41")) {
- caps->sse41 = false;
- }
- if(getenv("CYCLES_CPU_NO_SSE3")) {
- caps->sse3 = false;
- }
- if(getenv("CYCLES_CPU_NO_SSE2")) {
- caps->sse2 = false;
- }
- if(getenv("CYCLES_CPU_NO_SSE")) {
- caps->sse = false;
- }
-}
-
static CPUCapabilities& system_cpu_capabilities()
{
static CPUCapabilities caps;
@@ -201,8 +179,6 @@ static CPUCapabilities& system_cpu_capabilities()
caps.avx2 = (result[1] & ((int)1 << 5)) != 0;
}
- system_cpu_capabilities_override(&caps);
-
caps_init = true;
}
@@ -212,30 +188,35 @@ static CPUCapabilities& system_cpu_capabilities()
bool system_cpu_support_sse2()
{
CPUCapabilities& caps = system_cpu_capabilities();
- return caps.sse && caps.sse2;
+ return DebugFlags().cpu.sse2 && caps.sse && caps.sse2;
}
bool system_cpu_support_sse3()
{
CPUCapabilities& caps = system_cpu_capabilities();
- return caps.sse && caps.sse2 && caps.sse3 && caps.ssse3;
+ return DebugFlags().cpu.sse3 &&
+ caps.sse && caps.sse2 && caps.sse3 && caps.ssse3;
}
bool system_cpu_support_sse41()
{
CPUCapabilities& caps = system_cpu_capabilities();
- return caps.sse && caps.sse2 && caps.sse3 && caps.ssse3 && caps.sse41;
+ return DebugFlags().cpu.sse41 &&
+ caps.sse && caps.sse2 && caps.sse3 && caps.ssse3 && caps.sse41;
}
bool system_cpu_support_avx()
{
CPUCapabilities& caps = system_cpu_capabilities();
- return caps.sse && caps.sse2 && caps.sse3 && caps.ssse3 && caps.sse41 && caps.avx;
+ return DebugFlags().cpu.avx &&
+ caps.sse && caps.sse2 && caps.sse3 && caps.ssse3 && caps.sse41 && caps.avx;
}
+
bool system_cpu_support_avx2()
{
CPUCapabilities& caps = system_cpu_capabilities();
- return caps.sse && caps.sse2 && caps.sse3 && caps.ssse3 && caps.sse41 && caps.avx && caps.f16c && caps.avx2 && caps.fma3 && caps.bmi1 && caps.bmi2;
+ return DebugFlags().cpu.avx2 &&
+ caps.sse && caps.sse2 && caps.sse3 && caps.ssse3 && caps.sse41 && caps.avx && caps.f16c && caps.avx2 && caps.fma3 && caps.bmi1 && caps.bmi2;
}
#else