[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