[Bf-blender-cvs] [6537660464d] temp-workspace-changes: Use workspace -> engine in the viewport

Dalai Felinto noreply at git.blender.org
Fri Sep 8 23:55:10 CEST 2017


Commit: 6537660464d73a87423262e90dc6b926e61a12f9
Author: Dalai Felinto
Date:   Fri Sep 8 22:59:43 2017 +0200
Branches: temp-workspace-changes
https://developer.blender.org/rB6537660464d73a87423262e90dc6b926e61a12f9

Use workspace -> engine in the viewport

Not yet for OpenGL render.

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

M	source/blender/draw/DRW_engine.h
M	source/blender/draw/intern/draw_manager.c

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

diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h
index b780e86b9ec..190c5c0f8f6 100644
--- a/source/blender/draw/DRW_engine.h
+++ b/source/blender/draw/DRW_engine.h
@@ -42,6 +42,7 @@ struct ViewportEngineData;
 struct View3D;
 struct rcti;
 struct GPUOffScreen;
+struct WorkSpace;
 
 #include "BLI_sys_types.h"  /* for bool */
 
@@ -66,6 +67,7 @@ void DRW_engine_viewport_data_size_get(
 void DRW_draw_view(const struct bContext *C);
 
 void DRW_draw_render_loop_ex(
+        struct WorkSpace *workspace,
         struct Depsgraph *graph,
         struct ARegion *ar, struct View3D *v3d,
         const struct bContext *evil_C);
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 601ea35f8c1..f117d0c0af9 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -2866,10 +2866,10 @@ static void use_drw_engine(DrawEngineType *engine)
 /* TODO revisit this when proper layering is implemented */
 /* Gather all draw engines needed and store them in DST.enabled_engines
  * That also define the rendering order of engines */
-static void DRW_engines_enable_from_engine(const Scene *scene)
+static void DRW_engines_enable_from_engine(const char *engine)
 {
 	/* TODO layers */
-	RenderEngineType *type = RE_engines_find(scene->r.engine);
+	RenderEngineType *type = RE_engines_find(engine);
 	if (type->draw_engine != NULL) {
 		use_drw_engine(type->draw_engine);
 	}
@@ -2951,11 +2951,13 @@ static void DRW_engines_enable_external(void)
 	use_drw_engine(DRW_engine_viewport_external_type.draw_engine);
 }
 
-static void DRW_engines_enable(const Scene *scene, SceneLayer *sl)
+static void DRW_engines_enable(const Scene *scene, const WorkSpace *workspace, SceneLayer *sl)
 {
 	Object *obact = OBACT_NEW(sl);
 	const int mode = CTX_data_mode_enum_ex(scene->obedit, obact);
-	DRW_engines_enable_from_engine(scene);
+	const char *engine = BKE_render_engine_get(scene, workspace);
+
+	DRW_engines_enable_from_engine(engine);
 
 	if (DRW_state_draw_support()) {
 		DRW_engines_enable_from_object_mode();
@@ -3113,13 +3115,14 @@ static void DRW_debug_gpu_stats(void)
  * for each relevant engine / mode engine. */
 void DRW_draw_view(const bContext *C)
 {
+	WorkSpace *workspace = CTX_wm_workspace(C);
 	struct Depsgraph *graph = CTX_data_depsgraph(C);
 	ARegion *ar = CTX_wm_region(C);
 	View3D *v3d = CTX_wm_view3d(C);
 
 	/* Reset before using it. */
 	memset(&DST, 0x0, sizeof(DST));
-	DRW_draw_render_loop_ex(graph, ar, v3d, C);
+	DRW_draw_render_loop_ex(workspace, graph, ar, v3d, C);
 }
 
 /**
@@ -3127,6 +3130,7 @@ void DRW_draw_view(const bContext *C)
  * Need to reset DST before calling this function
  */
 void DRW_draw_render_loop_ex(
+        struct WorkSpace *workspace,
         struct Depsgraph *graph,
         ARegion *ar, View3D *v3d,
         const bContext *evil_C)
@@ -3153,7 +3157,7 @@ void DRW_draw_render_loop_ex(
 	DRW_viewport_var_init();
 
 	/* Get list of enabled engines */
-	DRW_engines_enable(scene, sl);
+	DRW_engines_enable(scene, workspace, sl);
 
 	/* Update ubos */
 	DRW_globals_update();
@@ -3233,7 +3237,7 @@ void DRW_draw_render_loop(
 {
 	/* Reset before using it. */
 	memset(&DST, 0x0, sizeof(DST));
-	DRW_draw_render_loop_ex(graph, ar, v3d, NULL);
+	DRW_draw_render_loop_ex(NULL, graph, ar, v3d, NULL);
 }
 
 void DRW_draw_render_loop_offscreen(
@@ -3252,7 +3256,7 @@ void DRW_draw_render_loop_offscreen(
 	/* Reset before using it. */
 	memset(&DST, 0x0, sizeof(DST));
 	DST.options.is_image_render = true;
-	DRW_draw_render_loop_ex(graph, ar, v3d, NULL);
+	DRW_draw_render_loop_ex(NULL, graph, ar, v3d, NULL);
 
 	/* restore */
 	{



More information about the Bf-blender-cvs mailing list