Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-03-29 13:18:07 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-03-29 13:18:07 +0300
commit0cbf747ffaa64e8e91f7b919d463382aee490169 (patch)
treeb9854f9db20761c33a9ae75f51eaa8c790f7c42f /source/blender/draw/intern
parent317702310412454bdad8a942f4e02e1ff93c6aa1 (diff)
Draw manager: Make evaluation context a part of context state
This way we don't have to re-initialize the full evaluation context in every area we need it.
Diffstat (limited to 'source/blender/draw/intern')
-rw-r--r--source/blender/draw/intern/DRW_render.h3
-rw-r--r--source/blender/draw/intern/draw_manager.c13
2 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index dc2e61b564b..60e855108f9 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -57,6 +57,8 @@
#include "RE_engine.h"
+#include "DEG_depsgraph.h"
+
struct rcti;
struct bContext;
struct GPUFrameBuffer;
@@ -504,6 +506,7 @@ typedef struct DRWContextState {
struct RenderEngineType *engine_type;
+ EvaluationContext eval_ctx;
struct Depsgraph *depsgraph;
eObjectMode object_mode;
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 7bfb558e471..282b8048cf3 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -346,6 +346,17 @@ static void drw_viewport_cache_resize(void)
DRW_instance_data_list_resize(DST.idatalist);
}
+static void drw_state_eval_ctx_init(DRWManager *dst)
+{
+ DRWContextState *draw_ctx = &dst->draw_ctx;
+ DEG_evaluation_context_init_from_scene(
+ &draw_ctx->eval_ctx,
+ draw_ctx->scene,
+ draw_ctx->view_layer,
+ draw_ctx->engine_type,
+ draw_ctx->object_mode,
+ DST.options.is_scene_render ? DAG_EVAL_RENDER : DAG_EVAL_VIEWPORT);
+}
/* Not a viewport variable, we could split this out. */
static void drw_context_state_init(void)
@@ -368,6 +379,8 @@ static void drw_context_state_init(void)
else {
DST.draw_ctx.object_pose = NULL;
}
+
+ drw_state_eval_ctx_init(&DST);
}
/* It also stores viewport variable to an immutable place: DST