[Bf-blender-cvs] [1cf325ac9a6] temp-workspace-changes: Use workspace -> engine in the opengl render

Dalai Felinto noreply at git.blender.org
Thu Sep 14 12:09:58 CEST 2017


Commit: 1cf325ac9a651b019fe5fe2629d0d813ddb14593
Author: Dalai Felinto
Date:   Fri Sep 8 23:41:03 2017 +0200
Branches: temp-workspace-changes
https://developer.blender.org/rB1cf325ac9a651b019fe5fe2629d0d813ddb14593

Use workspace -> engine in the opengl render

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

M	source/blender/blenkernel/BKE_sequencer.h
M	source/blender/blenkernel/intern/sequencer.c
M	source/blender/draw/DRW_engine.h
M	source/blender/draw/intern/draw_manager.c
M	source/blender/editors/include/ED_view3d.h
M	source/blender/editors/render/render_opengl.c
M	source/blender/editors/sculpt_paint/paint_image_proj.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/editors/space_view3d/view3d_draw_legacy.c
M	source/blender/windowmanager/intern/wm_files.c

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

diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h
index bcc06a4ab25..5b269fc4aad 100644
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@ -46,8 +46,8 @@ struct SequenceModifierData;
 struct Stereo3dFormat;
 struct StripElem;
 struct bSound;
-
 struct SeqIndexBuildContext;
+struct WorkSpace;
 
 #define EARLY_NO_INPUT      -1
 #define EARLY_DO_EFFECT     0
@@ -422,7 +422,8 @@ struct Sequence *BKE_sequencer_add_movie_strip(struct bContext *C, ListBase *seq
 
 /* view3d draw callback, run when not in background view */
 typedef struct ImBuf *(*SequencerDrawView)(
-        const struct EvaluationContext *eval_ctx, struct Scene *, struct SceneLayer *sl, struct Object *, int, int,
+        const struct EvaluationContext *eval_ctx, struct Scene *, const struct WorkSpace *,
+        struct SceneLayer *sl, struct Object *, int, int,
         unsigned int, int, bool, bool, bool,
         int, int, bool, const char *,
         struct GPUFX *, struct GPUOffScreen *, char[256]);
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 4818c7a0217..d4f392fe126 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -3311,7 +3311,7 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq
 		BKE_scene_update_for_newframe(context->eval_ctx, context->bmain, scene);
 		ibuf = sequencer_view3d_cb(
 		        /* set for OpenGL render (NULL when scrubbing) */
-		        context->eval_ctx, scene, BKE_scene_layer_from_scene_get(scene), camera, width, height, IB_rect,
+		        context->eval_ctx, scene, NULL, BKE_scene_layer_from_scene_get(scene), camera, width, height, IB_rect,
 		        context->scene->r.seq_prev_type,
 		        (context->scene->r.seq_flag & R_SEQ_SOLID_TEX) != 0,
 		        use_gpencil, use_background, scene->r.alphamode,
diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h
index 190c5c0f8f6..7d827e12f99 100644
--- a/source/blender/draw/DRW_engine.h
+++ b/source/blender/draw/DRW_engine.h
@@ -67,7 +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,
+        const struct WorkSpace *workspace,
         struct Depsgraph *graph,
         struct ARegion *ar, struct View3D *v3d,
         const struct bContext *evil_C);
@@ -75,6 +75,7 @@ void DRW_draw_render_loop(
         struct Depsgraph *graph,
         struct ARegion *ar, struct View3D *v3d);
 void DRW_draw_render_loop_offscreen(
+        const struct WorkSpace *workspace,
         struct Depsgraph *graph,
         struct ARegion *ar, struct View3D *v3d,
         struct GPUOffScreen *ofs);
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 42895979be9..b543868a81c 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -3149,7 +3149,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,
+        const struct WorkSpace *workspace,
         struct Depsgraph *graph,
         ARegion *ar, View3D *v3d,
         const bContext *evil_C)
@@ -3260,6 +3260,7 @@ void DRW_draw_render_loop(
 }
 
 void DRW_draw_render_loop_offscreen(
+        const struct WorkSpace *workspace,
         struct Depsgraph *graph,
         ARegion *ar, View3D *v3d, GPUOffScreen *ofs)
 {
@@ -3275,7 +3276,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(NULL, graph, ar, v3d, NULL);
+	DRW_draw_render_loop_ex(workspace, graph, ar, v3d, NULL);
 
 	/* restore */
 	{
diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h
index 0dcfd68c0f1..767e4c91212 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -68,6 +68,7 @@ struct wmWindowManager;
 struct GPUFX;
 struct GPUOffScreen;
 struct GPUFXSettings;
+struct WorkSpace;
 enum eGPUFXFlags;
 
 /* for derivedmesh drawing callbacks, for view3d_select, .... */
@@ -371,7 +372,8 @@ bool ED_view3d_context_activate(struct bContext *C);
 void ED_view3d_draw_offscreen_init(
         const struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d);
 void ED_view3d_draw_offscreen(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4],
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, const struct WorkSpace *workspace,
+        struct SceneLayer *sl, struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4],
         float winmat[4][4], bool do_bgpic, bool do_sky, bool is_persp, const char *viewname,
         struct GPUFX *fx, struct GPUFXSettings *fx_settings,
         struct GPUOffScreen *ofs);
@@ -380,12 +382,14 @@ void ED_view3d_draw_setup_view(
         float viewmat[4][4], float winmat[4][4], const struct rcti *rect);
 
 struct ImBuf *ED_view3d_draw_offscreen_imbuf(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d, struct ARegion *ar,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, const struct WorkSpace *workspace,
+        struct SceneLayer *sl, struct View3D *v3d, struct ARegion *ar,
         int sizex, int sizey, unsigned int flag, bool draw_background,
         int alpha_mode, int samples, bool full_samples, const char *viewname,
         struct GPUFX *fx, struct GPUOffScreen *ofs, char err_out[256]);
 struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct SceneLayer *sl, struct Object *camera, int width, int height,
+        const struct EvaluationContext *eval_ctx, struct Scene *scene, const struct WorkSpace *workspace,
+        struct SceneLayer *sl, struct Object *camera, int width, int height,
         unsigned int flag, int drawtype, bool use_solid_tex, bool use_gpencil, bool draw_background,
         int alpha_mode, int samples, bool full_samples, const char *viewname,
         struct GPUFX *fx, struct GPUOffScreen *ofs, char err_out[256]);
diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c
index 47e8a64cb0b..d65d0d4bd18 100644
--- a/source/blender/editors/render/render_opengl.c
+++ b/source/blender/editors/render/render_opengl.c
@@ -94,6 +94,7 @@ typedef struct OGLRender {
 	Main *bmain;
 	Render *re;
 	Scene *scene;
+	WorkSpace *workspace;
 	SceneLayer *scene_layer;
 
 	View3D *v3d;
@@ -267,6 +268,7 @@ static void screen_opengl_views_setup(OGLRender *oglrender)
 static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, RenderResult *rr)
 {
 	Scene *scene = oglrender->scene;
+	WorkSpace *workspace = oglrender->workspace;
 	SceneLayer *sl = oglrender->scene_layer;
 	ARegion *ar = oglrender->ar;
 	View3D *v3d = oglrender->v3d;
@@ -352,7 +354,7 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R
 
 		if (view_context) {
 			ibuf_view = ED_view3d_draw_offscreen_imbuf(
-			       &eval_ctx, scene, sl, v3d, ar, sizex, sizey,
+			       &eval_ctx, scene, workspace, sl, v3d, ar, sizex, sizey,
 			       IB_rect, draw_bgpic,
 			       alpha_mode, oglrender->ofs_samples, oglrender->ofs_full_samples, viewname,
 			       oglrender->fx, oglrender->ofs, err_out);
@@ -364,7 +366,7 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R
 		}
 		else {
 			ibuf_view = ED_view3d_draw_offscreen_imbuf_simple(
-			        &eval_ctx, scene, sl, scene->camera, oglrender->sizex, oglrender->sizey,
+			        &eval_ctx, scene, workspace, sl, scene->camera, oglrender->sizex, oglrender->sizey,
 			        IB_rect, OB_SOLID, false, true, true,
 			        alpha_mode, oglrender->ofs_samples, oglrender->ofs_full_samples, viewname,
 			        oglrender->fx, oglrender->ofs, err_out);
@@ -662,6 +664,7 @@ static bool screen_opengl_render_init(bContext *C, wmOperator *op)
 	oglrender->sizey = sizey;
 	oglrender->bmain = CTX_data_main(C);
 	oglrender->scene = scene;
+	oglrender->workspace = CTX_wm_workspace(C);
 	oglrender->scene_layer = CTX_data_scene_layer(C);
 	oglrender->cfrao = scene->r.cfra;
 
diff --git a/source/blender/editors/sculpt_paint/paint_image_proj.c b/source/blender/editors/sculpt_paint/paint_image_proj.c
index 2ffd9757f92..0c933842761 100644
--- a/source/blender/editors/sculpt_paint/paint_image_proj.c
+++ b/source/blender/editors/sculpt_paint/paint_image_proj.c
@@ -5455,6 +5455,7 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op)
 	char filename[FILE_MAX];
 
 	Scene *scene = CTX_data_scene(C);
+	WorkSpace *workspace = CTX_wm_workspace(C);
 	SceneLayer *sl = CTX_data_scene_layer(C);
 	EvaluationContext eval_ctx;
 	ToolSettings *settings = scene->toolsettings;
@@ -5473,7 +5474,7 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op)
 	if (h > maxsize) h = maxsize;
 
 	ibuf = ED_view3d_draw_offscreen_imbuf(
-	        &eval_ctx, scene, sl, CTX_wm_view3d(C), CTX_wm_region(C),
+	        &eval_ctx, scene, workspace, sl, CTX_wm_view3d(C), CTX_wm_region(C),
 	        w, h, IB_rect, false, R_ALPHAPREMUL, 0, false, NULL,
 	        NULL, NULL, err_out);
 	if (!ibuf) {
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 9af0be79a42..469441fd1a2 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -1961,7 +1961,8 @@ static void view3d_main_region_clear(Scene *scene, View3D *v3d, ARegion *ar)
  * stuff like shadow buffers
  */
 void ED_view3d_draw_offscreen(
-        const EvaluationContext *eval_ctx, Scene *scene, SceneLayer *sl, V

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list