[Bf-blender-cvs] [1c7a78d94e3] temp-workspace-changes: Use workspace engine for draw manager "render preview"
Dalai Felinto
noreply at git.blender.org
Wed Sep 13 19:15:57 CEST 2017
Commit: 1c7a78d94e3427218ac9855ee80c1a73089f73cc
Author: Dalai Felinto
Date: Wed Sep 13 11:22:24 2017 +0200
Branches: temp-workspace-changes
https://developer.blender.org/rB1c7a78d94e3427218ac9855ee80c1a73089f73cc
Use workspace engine for draw manager "render preview"
===================================================================
M source/blender/draw/engines/external/external_engine.c
M source/blender/draw/intern/DRW_render.h
M source/blender/draw/intern/draw_manager.c
===================================================================
diff --git a/source/blender/draw/engines/external/external_engine.c b/source/blender/draw/engines/external/external_engine.c
index e487b29ebfd..13795fc9d99 100644
--- a/source/blender/draw/engines/external/external_engine.c
+++ b/source/blender/draw/engines/external/external_engine.c
@@ -152,7 +152,7 @@ static void external_draw_scene(void *vedata)
/* Create render engine. */
if (!rv3d->render_engine) {
RenderEngine *engine;
- type = RE_engines_find(scene->r.engine);
+ type = RE_engines_find(draw_ctx->engine);
if (!(type->view_update && type->render_to_view)) {
return;
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index 4b0bbc3c175..066908c8648 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -410,6 +410,8 @@ typedef struct DRWContextState {
/* Use 'scene->obedit' for edit-mode */
struct Object *obact; /* 'OBACT_NEW' */
+ const char *engine;
+
/* Last resort (some functions take this as an arg so we can't easily avoid).
* May be NULL when used for selection or depth buffer. */
const struct bContext *evil_C;
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index f70a533324b..842f9386573 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -37,6 +37,7 @@
#include "BKE_object.h"
#include "BKE_pbvh.h"
#include "BKE_paint.h"
+#include "BKE_workspace.h"
#include "BLT_translation.h"
#include "BLF_api.h"
@@ -3137,6 +3138,19 @@ void DRW_draw_view(const bContext *C)
}
/**
+ * Return the render engine to use for render.
+ */
+static const char *render_engine_get(Scene *scene, const WorkSpace *workspace)
+{
+ if (DRW_state_is_scene_render() || BKE_workspace_use_scene_settings_get(workspace)) {
+ return scene->r.engine;
+ }
+ else {
+ return BKE_workspace_engine_get(workspace);
+ }
+}
+
+/**
* Used for both regular and off-screen drawing.
* Need to reset DST before calling this function
*/
@@ -3160,9 +3174,11 @@ void DRW_draw_render_loop_ex(
cache_is_dirty = GPU_viewport_cache_validate(DST.viewport, DRW_engines_get_hash());
DST.draw_ctx = (DRWContextState){
- ar, rv3d, v3d, scene, sl, OBACT_NEW(sl),
- /* reuse if caller sets */
- DST.draw_ctx.evil_C,
+ ar, rv3d, v3d, scene, sl, OBACT_NEW(sl),
+ render_engine_get(scene, workspace),
+
+ /* reuse if caller sets */
+ DST.draw_ctx.evil_C,
};
DRW_viewport_var_init();
@@ -3347,7 +3363,7 @@ void DRW_draw_select_loop(
/* Instead of 'DRW_context_state_init(C, &DST.draw_ctx)', assign from args */
DST.draw_ctx = (DRWContextState){
- ar, rv3d, v3d, scene, sl, OBACT_NEW(sl), (bContext *)NULL,
+ ar, rv3d, v3d, scene, sl, OBACT_NEW(sl), "", (bContext *)NULL,
};
DRW_viewport_var_init();
@@ -3445,7 +3461,7 @@ void DRW_draw_depth_loop(
/* Instead of 'DRW_context_state_init(C, &DST.draw_ctx)', assign from args */
DST.draw_ctx = (DRWContextState){
- ar, rv3d, v3d, scene, sl, OBACT_NEW(sl), (bContext *)NULL,
+ ar, rv3d, v3d, scene, sl, OBACT_NEW(sl), "", (bContext *)NULL,
};
DRW_viewport_var_init();
More information about the Bf-blender-cvs
mailing list