diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py index c83da3d5b54..d8084fa5014 100644 --- a/intern/cycles/blender/addon/properties.py +++ b/intern/cycles/blender/addon/properties.py @@ -554,6 +554,7 @@ class CyclesRenderSettings(bpy.types.PropertyGroup): cls.debug_use_cpu_sse41 = BoolProperty(name="SSE41", default=True) cls.debug_use_cpu_sse3 = BoolProperty(name="SSE3", default=True) cls.debug_use_cpu_sse2 = BoolProperty(name="SSE2", default=True) + cls.debug_use_qbvh = BoolProperty(name="QBVH", default=True) cls.debug_opencl_kernel_type = EnumProperty( name="OpenCL Kernel Type", diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index 22df14201e8..522956d1590 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -1511,12 +1511,13 @@ class CyclesRender_PT_debug(CyclesButtonsPanel, Panel): col = layout.column() col.label('CPU Flags:') - row = layout.row(align=True) + row = col.row(align=True) row.prop(cscene, "debug_use_cpu_sse2", toggle=True) row.prop(cscene, "debug_use_cpu_sse3", toggle=True) row.prop(cscene, "debug_use_cpu_sse41", toggle=True) row.prop(cscene, "debug_use_cpu_avx", toggle=True) row.prop(cscene, "debug_use_cpu_avx2", toggle=True) + col.prop(cscene, "debug_use_qbvh") col = layout.column() col.label('OpenCL Flags:') diff --git a/intern/cycles/blender/blender_python.cpp b/intern/cycles/blender/blender_python.cpp index 006301eead7..4792f9612a9 100644 --- a/intern/cycles/blender/blender_python.cpp +++ b/intern/cycles/blender/blender_python.cpp @@ -65,6 +65,7 @@ bool debug_flags_sync_from_scene(BL::Scene b_scene) flags.cpu.sse41 = get_boolean(cscene, "debug_use_cpu_sse41"); flags.cpu.sse3 = get_boolean(cscene, "debug_use_cpu_sse3"); flags.cpu.sse2 = get_boolean(cscene, "debug_use_cpu_sse2"); + flags.cpu.qbvh = get_boolean(cscene, "debug_use_qbvh"); /* Synchronize OpenCL kernel type. */ switch(get_enum(cscene, "debug_opencl_kernel_type")) { case 0: diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 8180aa0c948..78882156ed1 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -442,7 +442,7 @@ SceneParams BlenderSync::get_scene_params(BL::Scene b_scene, bool background, bo #if !(defined(__GNUC__) && (defined(i386) || defined(_M_IX86))) if(is_cpu) { - params.use_qbvh = system_cpu_support_sse2(); + params.use_qbvh = DebugFlags().cpu.qbvh && system_cpu_support_sse2(); } else #endif diff --git a/intern/cycles/util/util_debug.cpp b/intern/cycles/util/util_debug.cpp index df75d85e2c7..0f3862ad869 100644 --- a/intern/cycles/util/util_debug.cpp +++ b/intern/cycles/util/util_debug.cpp @@ -28,7 +28,8 @@ DebugFlags::CPU::CPU() avx(true), sse41(true), sse3(true), - sse2(true) + sse2(true), + qbvh(true) { reset(); } @@ -52,6 +53,8 @@ void DebugFlags::CPU::reset() #undef STRINGIFY #undef CHECK_CPU_FLAGS + + qbvh = true; } DebugFlags::OpenCL::OpenCL() diff --git a/intern/cycles/util/util_debug.h b/intern/cycles/util/util_debug.h index 53b1ea42164..723d4a0a1ec 100644 --- a/intern/cycles/util/util_debug.h +++ b/intern/cycles/util/util_debug.h @@ -41,6 +41,9 @@ public: bool sse41; bool sse3; bool sse2; + + /* Whether QBVH usage is allowed or not. */ + bool qbvh; }; /* Descriptor of OpenCL feature-set to be used. */