[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28491] branches/render25/source/blender: Render Branch: Fix image tile cache crash with displacement modifier

Brecht Van Lommel brecht at blender.org
Wed Apr 28 16:36:36 CEST 2010


Revision: 28491
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28491
Author:   blendix
Date:     2010-04-28 16:36:36 +0200 (Wed, 28 Apr 2010)

Log Message:
-----------
Render Branch: Fix image tile cache crash with displacement modifier
and preview render running at the same time, now the main thread and
thread 0 for rendering have a separate cache.

Modified Paths:
--------------
    branches/render25/source/blender/blenkernel/intern/effect.c
    branches/render25/source/blender/imbuf/intern/cache.c
    branches/render25/source/blender/modifiers/intern/MOD_util.c

Modified: branches/render25/source/blender/blenkernel/intern/effect.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/effect.c	2010-04-28 13:43:49 UTC (rev 28490)
+++ branches/render25/source/blender/blenkernel/intern/effect.c	2010-04-28 14:36:36 UTC (rev 28491)
@@ -783,7 +783,7 @@
 		mul_mat3_m4_v3(eff->ob->obmat, tex_co);
 	}
 
-	hasrgb = multitex_ext(eff->pd->tex, tex_co, NULL,NULL, 0, result, 0);
+	hasrgb = multitex_ext(eff->pd->tex, tex_co, NULL,NULL, 0, result, -1);
 
 	if(hasrgb && mode==PFIELD_TEX_RGB) {
 		force[0] = (0.5f - result->tr) * strength;
@@ -794,15 +794,15 @@
 		strength/=nabla;
 
 		tex_co[0] += nabla;
-		multitex_ext(eff->pd->tex, tex_co, NULL, NULL, 0, result+1, 0);
+		multitex_ext(eff->pd->tex, tex_co, NULL, NULL, 0, result+1, -1);
 
 		tex_co[0] -= nabla;
 		tex_co[1] += nabla;
-		multitex_ext(eff->pd->tex, tex_co, NULL, NULL, 0, result+2, 0);
+		multitex_ext(eff->pd->tex, tex_co, NULL, NULL, 0, result+2, -1);
 
 		tex_co[1] -= nabla;
 		tex_co[2] += nabla;
-		multitex_ext(eff->pd->tex, tex_co, NULL, NULL, 0, result+3, 0);
+		multitex_ext(eff->pd->tex, tex_co, NULL, NULL, 0, result+3, -1);
 
 		if(mode == PFIELD_TEX_GRAD || !hasrgb) { /* if we dont have rgb fall back to grad */
 			force[0] = (result[0].tin - result[1].tin) * strength;

Modified: branches/render25/source/blender/imbuf/intern/cache.c
===================================================================
--- branches/render25/source/blender/imbuf/intern/cache.c	2010-04-28 13:43:49 UTC (rev 28490)
+++ branches/render25/source/blender/imbuf/intern/cache.c	2010-04-28 14:36:36 UTC (rev 28491)
@@ -200,7 +200,7 @@
 
 	/* initialize for one thread, for places that access textures
 	   outside of rendering (displace modifier, painting, ..) */
-	IMB_tile_cache_params(1, 0);
+	IMB_tile_cache_params(0, 0);
 }
 
 void imb_tile_cache_exit(void)
@@ -228,6 +228,9 @@
 {
 	int a;
 
+	/* always one cache for non-threaded access */
+	totthread++;
+
 	/* lazy initialize cache */
 	if(GLOBAL_CACHE.totthread == totthread && GLOBAL_CACHE.maxmem == maxmem)
 		return;
@@ -385,7 +388,7 @@
 
 unsigned int *IMB_gettile(ImBuf *ibuf, int tx, int ty, int thread)
 {
-	return imb_thread_cache_get_tile(&GLOBAL_CACHE.thread_cache[thread], ibuf, tx, ty);
+	return imb_thread_cache_get_tile(&GLOBAL_CACHE.thread_cache[thread+1], ibuf, tx, ty);
 }
 
 void IMB_tiles_to_rect(ImBuf *ibuf)

Modified: branches/render25/source/blender/modifiers/intern/MOD_util.c
===================================================================
--- branches/render25/source/blender/modifiers/intern/MOD_util.c	2010-04-28 13:43:49 UTC (rev 28490)
+++ branches/render25/source/blender/modifiers/intern/MOD_util.c	2010-04-28 14:36:36 UTC (rev 28491)
@@ -53,7 +53,7 @@
 {
 	int result_type;
 
-	result_type = multitex_ext(texture, tex_co, NULL, NULL, 0, texres, 0);
+	result_type = multitex_ext(texture, tex_co, NULL, NULL, 0, texres, -1);
 
 	/* if the texture gave an RGB value, we assume it didn't give a valid
 	* intensity, so calculate one (formula from do_material_tex).





More information about the Bf-blender-cvs mailing list