diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py index 3007c44a20c..c23f0196c2d 100644 --- a/intern/cycles/blender/addon/properties.py +++ b/intern/cycles/blender/addon/properties.py @@ -235,6 +235,13 @@ class CyclesRenderSettings(bpy.types.PropertyGroup): default=0.0, ) + cls.debug_tile_size = IntProperty( + name="Tile Size", + description="", + min=1, max=4096, + default=1024, + ) + cls.resolution_divider = IntProperty( name="Resolution Divider", description="Start viewport rendering with lower resolution which would be real resolution divided by two in power of this value", diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index c44a3902f73..d35c93ccbd2 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -344,10 +344,24 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine b_engine, BL::Use } /* tiles */ - int tile_x = b_engine.tile_x(); - int tile_y = b_engine.tile_y(); + if(params.device.type != DEVICE_CPU && !background) { + printf("%d\n", get_int(cscene, "debug_tile_size")); + + /* currently GPU could be much slower than CPU when using tiles, + * still need to be investigated, but meanwhile make it possible + * to work in viewport smoothly + */ + int debug_tile_size = get_int(cscene, "debug_tile_size"); + + params.tile_size = make_int2(debug_tile_size, debug_tile_size); + } + else { + int tile_x = b_engine.tile_x(); + int tile_y = b_engine.tile_y(); + + params.tile_size = make_int2(tile_x, tile_y); + } - params.tile_size = make_int2(tile_x, tile_y); params.resolution = 1 << get_int(cscene, "resolution_divider"); /* other parameters */