From 5c29f5bfcf57a8b48905fa46bbb68b41778b169b Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 13 Aug 2012 14:51:39 +0000 Subject: [PATCH] Tomato Cycles: revert some changes of r49835 Apparently for viewport rendering on GPU tile size of 1024 gives much better performance than using single tile. Not sure why it doesn't work for background rendering, need to be investigated further. Meanwhile use old debug value of 1024 for tile size. --- intern/cycles/blender/addon/properties.py | 7 +++++++ intern/cycles/blender/blender_sync.cpp | 20 +++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) 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 */