[Bf-blender-cvs] [d97d9166ed] cycles-tiles-rework: Cycles: Implement the get_ideal_tile_size function

Mai Lavelle noreply at git.blender.org
Fri Jan 13 02:52:40 CET 2017


Commit: d97d9166ed001406f7f186e7e787fc5a046a2208
Author: Mai Lavelle
Date:   Wed Jan 11 22:19:24 2017 -0500
Branches: cycles-tiles-rework
https://developer.blender.org/rBd97d9166ed001406f7f186e7e787fc5a046a2208

Cycles: Implement the get_ideal_tile_size function

Since devices will be rendering many tiles at once the tile size chosen
is on the smaller side.

A limited selection of tiles sizes is provided as an option. This may be
removed later, for now its mostly useful for debugging.

===================================================================

M	intern/cycles/blender/addon/__init__.py
M	intern/cycles/blender/addon/properties.py
M	intern/cycles/blender/addon/ui.py
M	intern/cycles/blender/blender_session.cpp
M	intern/cycles/blender/blender_sync.cpp

===================================================================

diff --git a/intern/cycles/blender/addon/__init__.py b/intern/cycles/blender/addon/__init__.py
index 2938831787..62dfbba1d2 100644
--- a/intern/cycles/blender/addon/__init__.py
+++ b/intern/cycles/blender/addon/__init__.py
@@ -88,6 +88,9 @@ class CyclesRender(bpy.types.RenderEngine):
         else:
             self.report({'ERROR'}, "OSL support disabled in this build.")
 
+    def get_ideal_tile_size(self, scene):
+        return tuple(int(x) for x in scene.cycles.tile_size.split('x'))
+
 
 def engine_exit():
     engine.exit()
diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py
index 3616b13e75..d931502917 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -478,13 +478,6 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
                 default=0.0,
                 )
 
-        cls.debug_tile_size = IntProperty(
-                name="Tile Size",
-                description="",
-                min=1, max=4096,
-                default=1024,
-                )
-
         cls.preview_start_resolution = IntProperty(
                 name="Start Resolution",
                 description="Resolution to start rendering preview at, "
@@ -535,6 +528,16 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
                 default='HILBERT_SPIRAL',
                 options=set(),  # Not animatable!
                 )
+        cls.tile_size = EnumProperty(
+                name="Tile Size",
+                description="Size of tiles while rendering",
+                items=(
+                    ("16x16", "16x16", ""),
+                    ("32x32", "32x32", ""),
+                    ("64x64", "64x64", ""),
+                    ),
+                default='32x32',
+                )
         cls.use_progressive_refine = BoolProperty(
                 name="Progressive Refine",
                 description="Instead of rendering each tile until it is finished, "
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index 3f7730efbb..8539049fe3 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -385,9 +385,7 @@ class CyclesRender_PT_performance(CyclesButtonsPanel, Panel):
         sub = col.column(align=True)
         sub.label(text="Tiles:")
         sub.prop(cscene, "tile_order", text="")
-
-        sub.prop(rd, "tile_x", text="X")
-        sub.prop(rd, "tile_y", text="Y")
+        sub.prop(cscene, "tile_size", text="")
 
         sub.prop(cscene, "use_progressive_refine")
 
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 21166b2f15..1a8ef56f43 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -673,7 +673,10 @@ void BlenderSession::bake(BL::Object& b_object,
 	SessionParams session_params = BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background);
 	BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_v3d, b_rv3d, scene->camera, width, height);
 
-	scene->bake_manager->set_shader_limit((size_t)b_engine.tile_x(), (size_t)b_engine.tile_y());
+	/* TODO(mai): baking doesnt handle splitting work to multiple devices/threads very well
+	 * until thats improved use a larger work size to keep performance on gpu devices
+	 */
+	scene->bake_manager->set_shader_limit(256, 256);
 
 	/* set number of samples */
 	session->tile_manager.set_samples(session_params.samples);
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 38b2ce19e8..7467903ee5 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -643,21 +643,7 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine& b_engine,
 	}
 
 	/* tiles */
-	if(params.device.type != DEVICE_CPU && !background) {
-		/* 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(b_engine.tile_x(), b_engine.tile_y());
 
 	if((BlenderSession::headless == false) && background) {
 		params.tile_order = (TileOrder)get_enum(cscene, "tile_order");




More information about the Bf-blender-cvs mailing list