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/blender/addon | |
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/blender/addon')
-rw-r--r-- | intern/cycles/blender/addon/engine.py | 5 | ||||
-rw-r--r-- | intern/cycles/blender/addon/properties.py | 40 | ||||
-rw-r--r-- | intern/cycles/blender/addon/ui.py | 33 |
3 files changed, 78 insertions, 0 deletions
diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py index 030f0dbbf14..19fa23bd74a 100644 --- a/intern/cycles/blender/addon/engine.py +++ b/intern/cycles/blender/addon/engine.py @@ -88,6 +88,11 @@ def create(engine, data, scene, region=None, v3d=None, rv3d=None, preview_osl=Fa if rv3d: rv3d = rv3d.as_pointer() + if bpy.app.debug_value == 256: + _cycles.debug_flags_update(scene) + else: + _cycles.debug_flags_reset() + engine.session = _cycles.create(engine.as_pointer(), userpref, data, scene, region, v3d, rv3d, preview_osl) diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py index a64a033591a..0d96dabad42 100644 --- a/intern/cycles/blender/addon/properties.py +++ b/intern/cycles/blender/addon/properties.py @@ -550,6 +550,46 @@ class CyclesRenderSettings(bpy.types.PropertyGroup): min=0.0, max=1.0, ) + # Various fine-tuning debug flags + + def devices_update_callback(self, context): + import _cycles + scene = context.scene.as_pointer() + return _cycles.debug_flags_update(scene) + + cls.debug_use_cpu_avx2 = BoolProperty(name="AVX2", default=True) + cls.debug_use_cpu_avx = BoolProperty(name="AVX", default=True) + 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_opencl_kernel_type = EnumProperty( + name="OpenCL Kernel Type", + default='DEFAULT', + items=( + ('DEFAULT', "Default", ""), + ('MEGA', "Mega", ""), + ('SPLIT', "Split", ""), + ), + update=devices_update_callback + ) + + cls.debug_opencl_device_type = EnumProperty( + name="OpenCL Device Type", + default='ALL', + items=( + ('NONE', "None", ""), + ('ALL', "All", ""), + ('DEFAULT', "Default", ""), + ('CPU', "CPU", ""), + ('GPU', "GPU", ""), + ('ACCELLERATOR', "Accellerator", ""), + ), + update=devices_update_callback + ) + + cls.debug_use_opencl_debug = BoolProperty(name="Debug OpenCL", default=False) + @classmethod def unregister(cls): del bpy.types.Scene.cycles diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index 5f3406ec8a4..76251e182b7 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -1459,6 +1459,39 @@ class CyclesRender_PT_bake(CyclesButtonsPanel, Panel): row.prop(cbk, "normal_b", text="") +class CyclesRender_PT_debug(CyclesButtonsPanel, Panel): + bl_label = "Debug" + bl_context = "render" + bl_options = {'DEFAULT_CLOSED'} + COMPAT_ENGINES = {'CYCLES'} + + @classmethod + def poll(cls, context): + return bpy.app.debug_value == 256 + + def draw(self, context): + layout = self.layout + + scene = context.scene + cscene = scene.cycles + + col = layout.column() + + col.label('CPU Flags:') + row = layout.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 = layout.column() + col.label('OpenCL Flags:') + col.prop(cscene, "debug_opencl_kernel_type", text="Kernel") + col.prop(cscene, "debug_opencl_device_type", text="Device") + col.prop(cscene, "debug_use_opencl_debug", text="Debug") + + class CyclesParticle_PT_CurveSettings(CyclesButtonsPanel, Panel): bl_label = "Cycles Hair Settings" bl_context = "particle" |