diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-01-12 14:00:48 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-01-12 14:21:30 +0300 |
commit | ac7aefd7c2bc0e87b2787e374d414f18b7887baa (patch) | |
tree | 9dddc76953051052793639d4d59a934d1e97f250 /intern/cycles/util/util_system.cpp | |
parent | c6c223ade6470e7a9b61ea4a4a3ab6ed62abe79d (diff) |
Cycles: Use special debug panel to fine-tune debug flags
This panel is only visible when debug_value is set to 256 and has no
affect in other cases. However, if debug value is not set to this
value, environment variables will be used to control which features
are enabled, so there's no visible changes to anyone in fact.
There are some changes needed to prevent devices re-enumeration on
every Cycles session create.
Reviewers: juicyfruit, lukasstockner97, dingto, brecht
Reviewed By: lukasstockner97, dingto
Differential Revision: https://developer.blender.org/D1720
Diffstat (limited to 'intern/cycles/util/util_system.cpp')
-rw-r--r-- | intern/cycles/util/util_system.cpp | 41 |
1 files changed, 11 insertions, 30 deletions
diff --git a/intern/cycles/util/util_system.cpp b/intern/cycles/util/util_system.cpp index cc88320b68e..660c3e0c890 100644 --- a/intern/cycles/util/util_system.cpp +++ b/intern/cycles/util/util_system.cpp @@ -15,6 +15,7 @@ */ #include "util_system.h" +#include "util_debug.h" #include "util_types.h" #include "util_string.h" @@ -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 |