[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49158] branches/soc-2011-tomato/intern/ cycles: Tomato Cycles: code reshuffle to make data flow more obvious

Sergey Sharybin sergey.vfx at gmail.com
Tue Jul 24 00:06:47 CEST 2012


Revision: 49158
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49158
Author:   nazgul
Date:     2012-07-23 22:06:43 +0000 (Mon, 23 Jul 2012)
Log Message:
-----------
Tomato Cycles: code reshuffle to make data flow more obvious

Should be no functional changes

Modified Paths:
--------------
    branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp
    branches/soc-2011-tomato/intern/cycles/blender/blender_session.h
    branches/soc-2011-tomato/intern/cycles/render/session.cpp
    branches/soc-2011-tomato/intern/cycles/render/session.h

Modified: branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp
===================================================================
--- branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp	2012-07-23 21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp	2012-07-23 22:06:43 UTC (rev 49158)
@@ -189,7 +189,7 @@
 	RE_engine_end_result((RenderEngine*)b_engine.ptr.data, (RenderResult*)b_rr.ptr.data, (int)cancel);
 }
 
-void BlenderSession::write_render_buffers(RenderBuffers *buffers, bool final_sample)
+void BlenderSession::do_write_update_render_buffers(RenderBuffers *buffers, bool do_update, bool do_write)
 {
 	BufferParams& params = buffers->params;
 	int x = params.full_x - session->tile_manager.params.full_x;
@@ -210,16 +210,28 @@
 	BL::RenderLayer b_rlay = *b_single_rlay;
 
 	/* write result */
-	write_render_result(b_rr, b_rlay, buffers);
+	if (do_update)
+		write_render_result(b_rr, b_rlay, buffers);
 
-	if (final_sample)
+	if (do_write)
 		end_render_result(b_engine, b_rr);
 }
 
+void BlenderSession::write_render_buffers(RenderBuffers *buffers)
+{
+	do_write_update_render_buffers(buffers, true, true);
+}
+
+void BlenderSession::update_render_buffers(RenderBuffers *buffers)
+{
+	do_write_update_render_buffers(buffers, true, false);
+}
+
 void BlenderSession::render()
 {
 	/* set callback to write out render results */
-	session->write_render_buffers_cb = function_bind(&BlenderSession::write_render_buffers, this, _1, _2);
+	session->write_render_buffers_cb = function_bind(&BlenderSession::write_render_buffers, this, _1);
+	session->update_render_buffers_cb = function_bind(&BlenderSession::update_render_buffers, this, _1);
 
 	/* get buffer parameters */
 	SessionParams session_params = BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background);
@@ -290,6 +302,7 @@
 
 	/* clear callback */
 	session->write_render_buffers_cb = NULL;
+	session->update_render_buffers_cb = NULL;
 }
 
 void BlenderSession::write_render_result(BL::RenderResult b_rr, BL::RenderLayer b_rlay, RenderBuffers *buffers)

Modified: branches/soc-2011-tomato/intern/cycles/blender/blender_session.h
===================================================================
--- branches/soc-2011-tomato/intern/cycles/blender/blender_session.h	2012-07-23 21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/blender/blender_session.h	2012-07-23 22:06:43 UTC (rev 49158)
@@ -47,8 +47,10 @@
 
 	/* offline render */
 	void render();
+	void do_write_update_render_buffers(RenderBuffers *buffers, bool do_update, bool do_write);
 	void write_render_result(BL::RenderResult b_rr, BL::RenderLayer b_rlay, RenderBuffers *buffers);
-	void write_render_buffers(RenderBuffers *buffers, bool final_sample);
+	void write_render_buffers(RenderBuffers *buffers);
+	void update_render_buffers(RenderBuffers *buffers);
 
 	/* interactive updates */
 	void synchronize();

Modified: branches/soc-2011-tomato/intern/cycles/render/session.cpp
===================================================================
--- branches/soc-2011-tomato/intern/cycles/render/session.cpp	2012-07-23 21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/render/session.cpp	2012-07-23 22:06:43 UTC (rev 49158)
@@ -377,11 +377,11 @@
 {
 	thread_scoped_lock tile_lock(tile_mutex);
 
-	if(write_render_buffers_cb) {
+	if(update_render_buffers_cb) {
 		/* todo: optimize this by making it thread safe and removing lock */
 
 		if(!progress.get_cancel())
-			write_render_buffers_cb(rtile.buffers, false);
+			update_render_buffers_cb(rtile.buffers);
 	}
 
 	update_status_time();
@@ -394,7 +394,7 @@
 	if(write_render_buffers_cb) {
 		/* todo: optimize this by making it thread safe and removing lock */
 		if(!progress.get_cancel())
-			write_render_buffers_cb(rtile.buffers, true);
+			write_render_buffers_cb(rtile.buffers);
 		delete rtile.buffers;
 	}
 

Modified: branches/soc-2011-tomato/intern/cycles/render/session.h
===================================================================
--- branches/soc-2011-tomato/intern/cycles/render/session.h	2012-07-23 21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/render/session.h	2012-07-23 22:06:43 UTC (rev 49158)
@@ -105,7 +105,8 @@
 	TileManager tile_manager;
 	int sample;
 
-	boost::function<void(RenderBuffers*, bool)> write_render_buffers_cb;
+	boost::function<void(RenderBuffers*)> write_render_buffers_cb;
+	boost::function<void(RenderBuffers*)> update_render_buffers_cb;
 
 	Session(const SessionParams& params);
 	~Session();




More information about the Bf-blender-cvs mailing list