[Bf-blender-cvs] [7ad48ff] multiview: Merge remote-tracking branch 'origin/master' into multiview

Dalai Felinto noreply at git.blender.org
Sat Mar 21 14:13:17 CET 2015


Commit: 7ad48ff467e388bc5a7619c95ef1338613509483
Author: Dalai Felinto
Date:   Sat Mar 21 14:09:59 2015 +0100
Branches: multiview
https://developer.blender.org/rB7ad48ff467e388bc5a7619c95ef1338613509483

Merge remote-tracking branch 'origin/master' into multiview

Conflicts:
	source/blender/render/intern/source/external_engine.c

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



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

diff --cc source/blender/blenkernel/BKE_scene.h
index 292e365,c191f38..14c1a5f
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@@ -126,19 -125,16 +126,19 @@@ void BKE_scene_update_for_newframe_ex(s
  struct SceneRenderLayer *BKE_scene_add_render_layer(struct Scene *sce, const char *name);
  bool BKE_scene_remove_render_layer(struct Main *main, struct Scene *scene, struct SceneRenderLayer *srl);
  
 +struct SceneRenderView *BKE_scene_add_render_view(struct Scene *sce, const char *name);
 +bool BKE_scene_remove_render_view(struct Scene *scene, struct SceneRenderView *srv);
 +
  /* render profile */
- int get_render_subsurf_level(struct RenderData *r, int level);
- int get_render_child_particle_number(struct RenderData *r, int num);
- int get_render_shadow_samples(struct RenderData *r, int samples);
- float get_render_aosss_error(struct RenderData *r, float error);
+ int get_render_subsurf_level(const struct RenderData *r, int level);
+ int get_render_child_particle_number(const struct RenderData *r, int num);
+ int get_render_shadow_samples(const struct RenderData *r, int samples);
+ float get_render_aosss_error(const struct RenderData *r, float error);
  
- bool BKE_scene_use_new_shading_nodes(struct Scene *scene);
+ bool BKE_scene_use_new_shading_nodes(const struct Scene *scene);
  
- bool BKE_scene_uses_blender_internal(struct Scene *scene);
- bool BKE_scene_uses_blender_game(struct Scene *scene);
+ bool BKE_scene_uses_blender_internal(const struct Scene *scene);
+ bool BKE_scene_uses_blender_game(const struct Scene *scene);
  
  void BKE_scene_disable_color_management(struct Scene *scene);
  bool BKE_scene_check_color_management_enabled(const struct Scene *scene);
diff --cc source/blender/blenkernel/intern/scene.c
index 4fcb06c,c28d741..eed86e0
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@@ -1917,45 -1889,9 +1917,45 @@@ bool BKE_scene_remove_render_layer(Mai
  	return true;
  }
  
 +/* return default view */
 +SceneRenderView *BKE_scene_add_render_view(Scene *sce, const char *name)
 +{
 +	SceneRenderView *srv;
 +
 +	if (!name)
 +		name = DATA_("RenderView");
 +
 +	srv = MEM_callocN(sizeof(SceneRenderView), "new render view");
 +	BLI_strncpy(srv->name, name, sizeof(srv->name));
 +	BLI_uniquename(&sce->r.views, srv, DATA_("RenderView"), '.', offsetof(SceneRenderView, name), sizeof(srv->name));
 +	BLI_addtail(&sce->r.views, srv);
 +
 +	return srv;
 +}
 +
 +bool BKE_scene_remove_render_view(Scene *scene, SceneRenderView *srv)
 +{
 +	const int act = BLI_findindex(&scene->r.views, srv);
 +
 +	if (act == -1) {
 +		return false;
 +	}
 +	else if (scene->r.views.first == scene->r.views.last) {
 +		/* ensure 1 view is kept */
 +		return false;
 +	}
 +
 +	BLI_remlink(&scene->r.views, srv);
 +	MEM_freeN(srv);
 +
 +	scene->r.actview = 0;
 +
 +	return true;
 +}
 +
  /* render simplification */
  
- int get_render_subsurf_level(RenderData *r, int lvl)
+ int get_render_subsurf_level(const RenderData *r, int lvl)
  {
  	if (r->mode & R_SIMPLIFY)
  		return min_ii(r->simplify_subsurf, lvl);
diff --cc source/blender/render/intern/source/external_engine.c
index d633478,653f3f0..45b0395
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@@ -369,31 -368,18 +369,37 @@@ void RE_engine_set_error_message(Render
  	}
  }
  
 +void RE_engine_actview_set(RenderEngine *engine, const char *viewname)
 +{
 +	Render *re = engine->re;
 +	RE_SetActiveRenderView(re, viewname);
 +}
 +
 +float RE_engine_get_camera_shift_x(RenderEngine *engine, Object *camera)
 +{
 +	Render *re = engine->re;
 +	return BKE_camera_multiview_shift_x(re ? &re->r : NULL, camera, re->viewname);
 +}
 +
 +void RE_engine_get_camera_model_matrix(RenderEngine *engine, Object *camera, float *r_modelmat)
 +{
 +	Render *re = engine->re;
 +	BKE_camera_multiview_model_matrix(re ? &re->r : NULL, camera, re->viewname, (float (*)[4])r_modelmat);
 +}
 +
 +
- void RE_engine_get_current_tiles(Render *re, int *total_tiles_r, rcti **tiles_r)
+ rcti* RE_engine_get_current_tiles(Render *re, int *total_tiles_r, bool *r_needs_free)
  {
+ 	static rcti tiles_static[BLENDER_MAX_THREADS];
+ 	const int allocation_step = BLENDER_MAX_THREADS;
  	RenderPart *pa;
  	int total_tiles = 0;
- 	rcti *tiles = NULL;
- 	int allocation_size = 0, allocation_step = BLENDER_MAX_THREADS;
+ 	rcti *tiles = tiles_static;
+ 	int allocation_size = BLENDER_MAX_THREADS;
+ 
+ 	BLI_rw_mutex_lock(&re->partsmutex, THREAD_LOCK_READ);
+ 
+ 	*r_needs_free = false;
  
  	if (re->engine && (re->engine->flag & RE_ENGINE_HIGHLIGHT_TILES) == 0) {
  		*total_tiles_r = 0;
diff --cc source/blender/render/intern/source/pipeline.c
index ec3caa6,b397db7..31324b1
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@@ -1358,10 -1256,23 +1360,11 @@@ static void threaded_tile_processor(Ren
  	BLI_thread_queue_free(donequeue);
  	BLI_thread_queue_free(workqueue);
  	
 -	if (re->result->do_exr_tile) {
 -		BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
 -		render_result_exr_file_end(re);
 -		BLI_rw_mutex_unlock(&re->resultmutex);
 -	}
 -
 -	if (re->r.scemode & R_EXR_CACHE_FILE) {
 -		BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
 -		render_result_exr_file_cache_write(re);
 -		BLI_rw_mutex_unlock(&re->resultmutex);
 -	}
 -
  	/* unset threadsafety */
  	g_break = 0;
- 	
+ 	BLI_rw_mutex_lock(&re->partsmutex, THREAD_LOCK_WRITE);
  	RE_parts_free(re);
+ 	BLI_rw_mutex_unlock(&re->partsmutex);
  	re->viewplane = viewplane; /* restore viewplane, modified by pano render */
  }




More information about the Bf-blender-cvs mailing list