[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11426] branches/soc-2007-mosani/source/ blender/render: Somehow some changes accidently got reversed so this is

Aaron Moore two.a.ron at gmail.com
Mon Jul 30 13:53:42 CEST 2007


Revision: 11426
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11426
Author:   mosani
Date:     2007-07-30 13:53:42 +0200 (Mon, 30 Jul 2007)

Log Message:
-----------
Somehow some changes accidently got reversed so this is
mostly old changes rewritten.

Changes:
 1. wrote RND_stop_render()
 2. fixed up threaded_tile_processor and do_part_thread
  with render API stuff, they compile and run without 
  breaking, but a few things are commented out due to
  holes in the API.
 3. put a conditional abort call in rendercore.c:
   if( renderapi ? new_test_break : old_test_break ) ...
  it doesn't segfault now, but I've got to get more
  data into the database before it will produce anything.

Modified Paths:
--------------
    branches/soc-2007-mosani/source/blender/render/intern/include/renderpipeline.h
    branches/soc-2007-mosani/source/blender/render/intern/source/pipeline.c
    branches/soc-2007-mosani/source/blender/render/intern/source/rendercallbacks.c
    branches/soc-2007-mosani/source/blender/render/intern/source/rendercore.c
    branches/soc-2007-mosani/source/blender/render/render_api/include/RenderAPI.h
    branches/soc-2007-mosani/source/blender/render/render_api/source/RND_context.c
    branches/soc-2007-mosani/source/blender/render/render_api/source/RND_internal.c

Modified: branches/soc-2007-mosani/source/blender/render/intern/include/renderpipeline.h
===================================================================
--- branches/soc-2007-mosani/source/blender/render/intern/include/renderpipeline.h	2007-07-30 11:10:30 UTC (rev 11425)
+++ branches/soc-2007-mosani/source/blender/render/intern/include/renderpipeline.h	2007-07-30 11:53:42 UTC (rev 11426)
@@ -47,6 +47,7 @@
 
 void render_layer_add_pass( struct RenderResult *rr, struct RenderLayer *rl, 
                             int channels, int passtype );
+int set_thread_break( int boolean );
 
 #define PASS_VECTOR_MAX	10000.0f
 

Modified: branches/soc-2007-mosani/source/blender/render/intern/source/pipeline.c
===================================================================
--- branches/soc-2007-mosani/source/blender/render/intern/source/pipeline.c	2007-07-30 11:10:30 UTC (rev 11425)
+++ branches/soc-2007-mosani/source/blender/render/intern/source/pipeline.c	2007-07-30 11:53:42 UTC (rev 11426)
@@ -130,6 +130,10 @@
 {
 	return g_break;
 }
+int set_thread_break( int boolean )
+{
+	g_break = boolean;
+}
 
 /* default callbacks, set in each new render */
 static void result_nothing(RenderResult *rr) {}

Modified: branches/soc-2007-mosani/source/blender/render/intern/source/rendercallbacks.c
===================================================================
--- branches/soc-2007-mosani/source/blender/render/intern/source/rendercallbacks.c	2007-07-30 11:10:30 UTC (rev 11425)
+++ branches/soc-2007-mosani/source/blender/render/intern/source/rendercallbacks.c	2007-07-30 11:53:42 UTC (rev 11426)
@@ -132,29 +132,37 @@
 	
 }
 
+RenderDatabase RDB;
+rcti global_image_bounds;
+#define RR_USEMEM	0
+
 static void *do_part_thread( void *pa_v )
 {
 	RenderPart *pa= pa_v;
 	
-	/* need to return nicely all parts on esc /
-	if(R.test_break()==0) {
-		pa->result= new_render_result(&R, &pa->disprect, pa->crop, RR_USEMEM);
+	/* need to return nicely all parts on esc */
+	if( !RND_stop_render() ) {
+		pa->result= RND_new_render_result( &RDB.r, 
+			&global_image_bounds, &pa->disprect, pa->crop, RR_USEMEM );
+		
+		/*new_render_result(&R, &pa->disprect, pa->crop, RR_USEMEM);*/
 
-		if(R.sss_points)
+		/*if(R.sss_points)
 			zbufshade_sss_tile(pa);
-		else if(R.osa)
+		else */
+		if( RDB.r.osa )
 			zbufshadeDA_tile(pa);
 		else
 			zbufshade_tile(pa);
 		
-		/ merge too on break! /
+		/* merge too on break! 
 		if(R.result->exrhandle)
-			save_render_result_tile(&R, pa);
-		else if(render_display_draw_enabled(&R))
-			merge_render_result(R.result, pa->result);
+			save_render_result_tile(&R, pa);              eventually removed and
+		else if(render_display_draw_enabled(&R))    replaced with sending to API
+			merge_render_result(R.result, pa->result);*/
 	}
 	
-	pa->ready= 1;*/
+	pa->ready= 1;
 	
 	return NULL;
 }
@@ -169,6 +177,9 @@
 	
 	/******** Setup Render ********/
 	
+	RDB = *db;
+	global_image_bounds = db->disprect;
+	
 	BLI_init_threads(&threads, do_part_thread, 1); /* thread count hardcoded: current API hole */
 	
 	/* timer loop demands to sleep when no parts are left, 
@@ -183,19 +194,19 @@
 	
 	/******** Execute Render ********/
 	
-	/*
+	
 	while(rendering) {
 		
-		if( RND_stop_rendering( RNDScene ) )
+		if( RND_stop_render() )
 			PIL_sleep_ms(50);
 		else if(nextpa && BLI_available_threads(&threads)) {
 			drawtimer= 0;
-			nextpa->nr= counter++;	/$ for nicest part, and for stats $/
-			nextpa->thread= BLI_available_thread_index(&threads);	/$ sample index $/
+			nextpa->nr= counter++;	/* for nicest part, and for stats */
+			nextpa->thread= BLI_available_thread_index(&threads);	/* sample index */
 			BLI_insert_thread(&threads, nextpa);
 
-			nextpa= find_next_part(re, minx);
-		}
+			nextpa= render_database_find_next_part( db, minx );
+		}/* commented out: current API hole
 		else if(re->r.mode & R_PANORAMA) {
 			if(nextpa==NULL && BLI_available_threads(&threads)==re->r.threads)
 				nextpa= find_next_pano_slice(re, &minx, &viewplane);
@@ -203,22 +214,22 @@
 				PIL_sleep_ms(50);
 				drawtimer++;
 			}
-		}
+		}*/
 		else {
 			PIL_sleep_ms(50);
 			drawtimer++;
 		}
 		
-		/$ check for ready ones to display, and if we need to continue $/
+		/* check for ready ones to display, and if we need to continue */
 		rendering= 0;
 		hasdrawn= 0;
-		for(pa= re->parts.first; pa; pa= pa->next) {
+		for(pa= db->parts.first; pa; pa= pa->next) {
 			if(pa->ready) {
 				
 				BLI_remove_thread(&threads, pa);
 				
 				if(pa->result) {
-					/$
+					/*
 					if(render_display_draw_enabled(re))
 						re->display_draw(pa->result, NULL);
 					print_part_stats(re, pa);
@@ -227,29 +238,29 @@
 					pa->result= NULL;
 					re->i.partsdone++;
 					hasdrawn= 1;
-					$/
+					*/
 				}
 			}
 			else {
-				/$
+				/*
 				rendering= 1;
 				if(pa->nr && pa->result && drawtimer>20) {
 					if(render_display_draw_enabled(re))
 						re->display_draw(pa->result, &pa->result->renrect);
 					hasdrawn= 1;
 				}
-				$/
+				*/
 			}
 		}
 		if(hasdrawn)
 			drawtimer= 0;
 
-		/$ on break, wait for all slots to get freed $/
-		if( (g_break=RND_stop_rendering( RNDScene )) && 
-				BLI_available_threads(&threads)==re->r.threads )
+		/* on break, wait for all slots to get freed */
+		if( set_thread_break( RND_stop_render() )  && 
+				BLI_available_threads(&threads)==1 ) /* hard coded: current API hole */
 			rendering= 0;
 		
-	}*/
+	}
 }
 
 static RenderPart *render_database_find_next_part( RenderDatabase *db, int minx )

Modified: branches/soc-2007-mosani/source/blender/render/intern/source/rendercore.c
===================================================================
--- branches/soc-2007-mosani/source/blender/render/intern/source/rendercore.c	2007-07-30 11:10:30 UTC (rev 11425)
+++ branches/soc-2007-mosani/source/blender/render/intern/source/rendercore.c	2007-07-30 11:53:42 UTC (rev 11426)
@@ -285,7 +285,7 @@
 				}
 			}
 		}
-		if(R.test_break() ) break; 
+		if( (G.renderAPI_toggle & 1) ? RND_stop_render() : R.test_break() ) break; 
 	}
 }
 
@@ -337,7 +337,7 @@
 			if(rd) rd++;
 		}
 		if(y&1)
-			if(R.test_break()) break; 
+			if( (G.renderAPI_toggle & 1) ? RND_stop_render() : R.test_break() ) break; 
 	}
 }				
 
@@ -510,7 +510,7 @@
 		}
 		
 		if(y&1)
-			if(R.test_break()) break; 
+			if( (G.renderAPI_toggle & 1) ? RND_stop_render() : R.test_break() ) break; 
 	}
 }
 
@@ -523,7 +523,7 @@
 	int samp;
 	int x, y, seed, crop=0, offs=0, od, addpassflag;
 	
-	if(R.test_break()) return; 
+	if( (G.renderAPI_toggle & 1) ? RND_stop_render() : R.test_break() ) return; 
 	
 	/* irregular shadowb buffer creation */
 	if(R.r.mode & R_SHADOW)
@@ -575,7 +575,7 @@
 		rectdaps+= pa->rectx;
 		offs+= pa->rectx;
 		
-		if(y&1) if(R.test_break()) break; 
+		if(y&1) if( (G.renderAPI_toggle & 1) ? RND_stop_render() : R.test_break() ) break; 
 	}
 	
 	/* disable scanline updating */
@@ -870,7 +870,7 @@
 				if(R.r.mode & R_EDGE) 
 					edge_enhance_tile(pa, edgerect);
 			
-			if(R.test_break()) break; 
+			if( (G.renderAPI_toggle & 1) ? RND_stop_render() : R.test_break() ) break; 
 		}
 		
 		/* shades solid */
@@ -997,7 +997,7 @@
 		
 		zbuffer_solid(pa, rl->lay, rl->layflag);
 		
-		if(!R.test_break()) {	/* NOTE: this if() is not consistant */
+		if( (G.renderAPI_toggle & 1) ? !RND_stop_render() : !R.test_break() ) {	/* NOTE: this if() is not consistant */
 			
 			/* edges only for solid part, ztransp doesn't support it yet anti-aliased */
 			if(rl->layflag & SCE_LAY_EDGE) {
@@ -1040,7 +1040,7 @@
 						}
 					}
 					if(y&1)
-						if(R.test_break()) break; 
+						if( (G.renderAPI_toggle & 1) ? RND_stop_render() : R.test_break() ) break; 
 				}
 				
 				if(R.r.mode & R_SHADOW)
@@ -1085,7 +1085,7 @@
 		if(rl->layflag & SCE_LAY_SKY)
 			sky_tile(pa, rl->rectf);
 		
-		if(!R.test_break()) {
+		if( (G.renderAPI_toggle & 1) ? !RND_stop_render() : !R.test_break() ) {
 			if(rl->layflag & SCE_LAY_EDGE) 
 				if(R.r.mode & R_EDGE)
 					edge_enhance_add(pa, rl->rectf, edgerect);
@@ -1486,7 +1486,7 @@
 	
 				rectft+= 4*rr->rectx;
 				
-				if(R.test_break()) break; 
+				if( (G.renderAPI_toggle & 1) ? RND_stop_render() : R.test_break() ) break; 
 			}
 		}
 	}
@@ -1669,7 +1669,7 @@
 	float l, *v1, *v2, *v3;
 	
 	/* fast threadsafe break test */
-	if(R.test_break())
+	if( (G.renderAPI_toggle & 1) ? RND_stop_render() : R.test_break() )
 		return;
 	
 	/* setup render coordinates */

Modified: branches/soc-2007-mosani/source/blender/render/render_api/include/RenderAPI.h
===================================================================
--- branches/soc-2007-mosani/source/blender/render/render_api/include/RenderAPI.h	2007-07-30 11:10:30 UTC (rev 11425)
+++ branches/soc-2007-mosani/source/blender/render/render_api/include/RenderAPI.h	2007-07-30 11:53:42 UTC (rev 11426)
@@ -86,7 +86,7 @@
  *  If it returns true, rendering should be stopped and all
  *  current results returned.
  */
-LIBEXPORT int RND_stop_render( RNDScene scene );
+LIBEXPORT int RND_stop_render();
 
 /* ------------------------------------------------------------------------ */
 /* ----------------------------  settings  -------------------------------- */

Modified: branches/soc-2007-mosani/source/blender/render/render_api/source/RND_context.c
===================================================================
--- branches/soc-2007-mosani/source/blender/render/render_api/source/RND_context.c	2007-07-30 11:10:30 UTC (rev 11425)
+++ branches/soc-2007-mosani/source/blender/render/render_api/source/RND_context.c	2007-07-30 11:53:42 UTC (rev 11426)
@@ -33,15 +33,17 @@
  * Controling the Render Context.
  */
 
+extern int (**global_test_break)();
+
 LIBEXPORT float RND_get_current_frame( RNDScene scene ){}
 
 LIBEXPORT void RND_set_current_frame( RNDScene scene, float new_frame ){}
 
 LIBEXPORT void RND_set_frame_offset( RNDScene scene, float offset ){}
 
-LIBEXPORT int RND_stop_render( RNDScene scene )
+LIBEXPORT int RND_stop_render()
 {
-	return scene->render->test_break();
+	return (*global_test_break)();
 }
 
 int RenderAPI_context_force_ref()

Modified: branches/soc-2007-mosani/source/blender/render/render_api/source/RND_internal.c
===================================================================
--- branches/soc-2007-mosani/source/blender/render/render_api/source/RND_internal.c	2007-07-30 11:10:30 UTC (rev 11425)
+++ branches/soc-2007-mosani/source/blender/render/render_api/source/RND_internal.c	2007-07-30 11:53:42 UTC (rev 11426)
@@ -42,6 +42,7 @@
 #include "render_types.h"
 #include "PLU_private.h"
 
+int (**global_test_break)();
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list