Depsgraph: Pass bmain to depsgraph object creation
Currently unused, but will allow to keep of an owner of the depsgraph. Could also simplify other APIs in the future by avoiding to pass bmain explicitly to relation update functions and things like that.
This commit is contained in:
parent
559df2fed9
commit
73a199e96a
|
@ -330,7 +330,7 @@ bool ABC_export(Scene *scene,
|
|||
* hardcore refactoring. */
|
||||
new (&job->settings) ExportSettings();
|
||||
job->settings.scene = scene;
|
||||
job->settings.depsgraph = DEG_graph_new(scene, job->view_layer, DAG_EVAL_RENDER);
|
||||
job->settings.depsgraph = DEG_graph_new(job->bmain, scene, job->view_layer, DAG_EVAL_RENDER);
|
||||
|
||||
/* TODO(Sybren): for now we only export the active scene layer.
|
||||
* Later in the 2.8 development process this may be replaced by using
|
||||
|
|
|
@ -220,7 +220,8 @@ void BKE_scene_allocate_depsgraph_hash(struct Scene *scene);
|
|||
void BKE_scene_ensure_depsgraph_hash(struct Scene *scene);
|
||||
void BKE_scene_free_depsgraph_hash(struct Scene *scene);
|
||||
|
||||
struct Depsgraph *BKE_scene_get_depsgraph(struct Scene *scene,
|
||||
struct Depsgraph *BKE_scene_get_depsgraph(struct Main *bmain,
|
||||
struct Scene *scene,
|
||||
struct ViewLayer *view_layer,
|
||||
bool allocate);
|
||||
|
||||
|
|
|
@ -1351,9 +1351,10 @@ int CTX_data_editable_gpencil_strokes(const bContext *C, ListBase *list)
|
|||
|
||||
Depsgraph *CTX_data_depsgraph_pointer(const bContext *C)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
/* Dependency graph might have been just allocated, and hence it will not be marked.
|
||||
* This confuses redo system due to the lack of flushing changes back to the original data.
|
||||
* In the future we would need to check whether the CTX_wm_window(C) is in editing mode (as an
|
||||
|
@ -1381,7 +1382,8 @@ Depsgraph *CTX_data_ensure_evaluated_depsgraph(const bContext *C)
|
|||
|
||||
Depsgraph *CTX_data_depsgraph_on_load(const bContext *C)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
return BKE_scene_get_depsgraph(scene, view_layer, false);
|
||||
return BKE_scene_get_depsgraph(bmain, scene, view_layer, false);
|
||||
}
|
||||
|
|
|
@ -1408,7 +1408,7 @@ void BKE_scene_graph_update_for_newframe(Depsgraph *depsgraph, Main *bmain)
|
|||
*/
|
||||
void BKE_scene_view_layer_graph_evaluated_ensure(Main *bmain, Scene *scene, ViewLayer *view_layer)
|
||||
{
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
DEG_make_active(depsgraph);
|
||||
BKE_scene_graph_update_tagged(depsgraph, bmain);
|
||||
}
|
||||
|
@ -2040,7 +2040,7 @@ void BKE_scene_free_depsgraph_hash(Scene *scene)
|
|||
|
||||
/* Query depsgraph for a specific contexts. */
|
||||
|
||||
Depsgraph *BKE_scene_get_depsgraph(Scene *scene, ViewLayer *view_layer, bool allocate)
|
||||
Depsgraph *BKE_scene_get_depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, bool allocate)
|
||||
{
|
||||
BLI_assert(scene != NULL);
|
||||
BLI_assert(view_layer != NULL);
|
||||
|
@ -2064,7 +2064,7 @@ Depsgraph *BKE_scene_get_depsgraph(Scene *scene, ViewLayer *view_layer, bool all
|
|||
scene->depsgraph_hash, &key, (void ***)&key_ptr, (void ***)&depsgraph_ptr)) {
|
||||
*key_ptr = MEM_mallocN(sizeof(DepsgraphKey), __func__);
|
||||
**key_ptr = key;
|
||||
*depsgraph_ptr = DEG_graph_new(scene, view_layer, DAG_EVAL_VIEWPORT);
|
||||
*depsgraph_ptr = DEG_graph_new(bmain, scene, view_layer, DAG_EVAL_VIEWPORT);
|
||||
/* TODO(sergey): Would be cool to avoid string format print,
|
||||
* but is a bit tricky because we can't know in advance whether
|
||||
* we will ever enable debug messages for this depsgraph.
|
||||
|
|
|
@ -3534,7 +3534,7 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context,
|
|||
}
|
||||
|
||||
/* opengl offscreen render */
|
||||
depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
depsgraph = BKE_scene_get_depsgraph(context->bmain, scene, view_layer, true);
|
||||
BKE_scene_graph_update_for_newframe(depsgraph, context->bmain);
|
||||
ibuf = sequencer_view3d_cb(
|
||||
/* set for OpenGL render (NULL when scrubbing) */
|
||||
|
|
|
@ -121,7 +121,7 @@ bContext *BlenderContext::get_context()
|
|||
Depsgraph *BlenderContext::get_depsgraph()
|
||||
{
|
||||
if (!depsgraph) {
|
||||
depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
depsgraph = BKE_scene_get_depsgraph(main, scene, view_layer, true);
|
||||
}
|
||||
return depsgraph;
|
||||
}
|
||||
|
|
|
@ -87,7 +87,10 @@ extern "C" {
|
|||
|
||||
/* Create new Depsgraph instance */
|
||||
// TODO: what args are needed here? What's the building-graph entry point?
|
||||
Depsgraph *DEG_graph_new(struct Scene *scene, struct ViewLayer *view_layer, eEvaluationMode mode);
|
||||
Depsgraph *DEG_graph_new(struct Main *bmain,
|
||||
struct Scene *scene,
|
||||
struct ViewLayer *view_layer,
|
||||
eEvaluationMode mode);
|
||||
|
||||
/* Free Depsgraph itself and all its data */
|
||||
void DEG_graph_free(Depsgraph *graph);
|
||||
|
|
|
@ -65,10 +65,11 @@ template<typename T> static void remove_from_vector(vector<T> *vector, const T &
|
|||
vector->erase(std::remove(vector->begin(), vector->end(), value), vector->end());
|
||||
}
|
||||
|
||||
Depsgraph::Depsgraph(Scene *scene, ViewLayer *view_layer, eEvaluationMode mode)
|
||||
Depsgraph::Depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode)
|
||||
: time_source(NULL),
|
||||
need_update(true),
|
||||
need_update_time(false),
|
||||
bmain(bmain),
|
||||
scene(scene),
|
||||
view_layer(view_layer),
|
||||
mode(mode),
|
||||
|
@ -313,9 +314,10 @@ ID *Depsgraph::get_cow_id(const ID *id_orig) const
|
|||
/* Public Graph API */
|
||||
|
||||
/* Initialize a new Depsgraph */
|
||||
Depsgraph *DEG_graph_new(Scene *scene, ViewLayer *view_layer, eEvaluationMode mode)
|
||||
Depsgraph *DEG_graph_new(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode)
|
||||
{
|
||||
DEG::Depsgraph *deg_depsgraph = OBJECT_GUARDED_NEW(DEG::Depsgraph, scene, view_layer, mode);
|
||||
DEG::Depsgraph *deg_depsgraph = OBJECT_GUARDED_NEW(
|
||||
DEG::Depsgraph, bmain, scene, view_layer, mode);
|
||||
return reinterpret_cast<Depsgraph *>(deg_depsgraph);
|
||||
}
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ struct Depsgraph {
|
|||
typedef vector<OperationNode *> OperationNodes;
|
||||
typedef vector<IDNode *> IDDepsNodes;
|
||||
|
||||
Depsgraph(Scene *scene, ViewLayer *view_layer, eEvaluationMode mode);
|
||||
Depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode);
|
||||
~Depsgraph();
|
||||
|
||||
TimeSourceNode *add_time_source();
|
||||
|
@ -172,7 +172,8 @@ struct Depsgraph {
|
|||
* Mainly used by graph evaluation. */
|
||||
SpinLock lock;
|
||||
|
||||
/* Scene, layer, mode this dependency graph is built for. */
|
||||
/* Main, scene, layer, mode this dependency graph is built for. */
|
||||
Main *bmain;
|
||||
Scene *scene;
|
||||
ViewLayer *view_layer;
|
||||
eEvaluationMode mode;
|
||||
|
|
|
@ -358,7 +358,7 @@ void DEG_relations_tag_update(Main *bmain)
|
|||
DEG_GLOBAL_DEBUG_PRINTF(TAG, "%s: Tagging relations for update.\n", __func__);
|
||||
LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
|
||||
LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
|
||||
Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(scene, view_layer, false);
|
||||
Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(bmain, scene, view_layer, false);
|
||||
if (depsgraph != NULL) {
|
||||
DEG_graph_tag_relations_update(depsgraph);
|
||||
}
|
||||
|
|
|
@ -91,7 +91,7 @@ bool DEG_debug_graph_relations_validate(Depsgraph *graph,
|
|||
Scene *scene,
|
||||
ViewLayer *view_layer)
|
||||
{
|
||||
Depsgraph *temp_depsgraph = DEG_graph_new(scene, view_layer, DEG_get_mode(graph));
|
||||
Depsgraph *temp_depsgraph = DEG_graph_new(bmain, scene, view_layer, DEG_get_mode(graph));
|
||||
bool valid = true;
|
||||
DEG_graph_build_from_view_layer(temp_depsgraph, bmain, scene, view_layer);
|
||||
if (!DEG_debug_compare(temp_depsgraph, graph)) {
|
||||
|
|
|
@ -607,7 +607,7 @@ void id_tag_update(Main *bmain, ID *id, int flag, eUpdateSource update_source)
|
|||
graph_id_tag_update(bmain, NULL, id, flag, update_source);
|
||||
LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
|
||||
LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
|
||||
Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(scene, view_layer, false);
|
||||
Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(bmain, scene, view_layer, false);
|
||||
if (depsgraph != NULL) {
|
||||
graph_id_tag_update(bmain, depsgraph, id, flag, update_source);
|
||||
}
|
||||
|
@ -771,7 +771,7 @@ void DEG_id_type_tag(Main *bmain, short id_type)
|
|||
{
|
||||
LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
|
||||
LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
|
||||
Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(scene, view_layer, false);
|
||||
Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(bmain, scene, view_layer, false);
|
||||
if (depsgraph != NULL) {
|
||||
DEG_graph_id_type_tag(depsgraph, id_type);
|
||||
}
|
||||
|
@ -790,7 +790,7 @@ void DEG_on_visible_update(Main *bmain, const bool do_time)
|
|||
{
|
||||
LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
|
||||
LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
|
||||
Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(scene, view_layer, false);
|
||||
Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(bmain, scene, view_layer, false);
|
||||
if (depsgraph != NULL) {
|
||||
DEG_graph_on_visible_update(bmain, depsgraph, do_time);
|
||||
}
|
||||
|
|
|
@ -561,7 +561,7 @@ wmJob *EEVEE_lightbake_job_create(struct wmWindowManager *wm,
|
|||
/* Cannot reuse depsgraph for now because we cannot get the update from the
|
||||
* main database directly. TODO reuse depsgraph and only update positions. */
|
||||
/* lbake->depsgraph = old_lbake->depsgraph; */
|
||||
lbake->depsgraph = DEG_graph_new(scene, view_layer, DAG_EVAL_RENDER);
|
||||
lbake->depsgraph = DEG_graph_new(bmain, scene, view_layer, DAG_EVAL_RENDER);
|
||||
|
||||
lbake->mutex = BLI_mutex_alloc();
|
||||
|
||||
|
@ -612,7 +612,7 @@ void *EEVEE_lightbake_job_data_alloc(struct Main *bmain,
|
|||
|
||||
EEVEE_LightBake *lbake = MEM_callocN(sizeof(EEVEE_LightBake), "EEVEE_LightBake");
|
||||
|
||||
lbake->depsgraph = DEG_graph_new(scene, view_layer, DAG_EVAL_RENDER);
|
||||
lbake->depsgraph = DEG_graph_new(bmain, scene, view_layer, DAG_EVAL_RENDER);
|
||||
lbake->scene = scene;
|
||||
lbake->bmain = bmain;
|
||||
lbake->view_layer_input = view_layer;
|
||||
|
|
|
@ -1025,7 +1025,7 @@ void DRW_cache_free_old_batches(Main *bmain)
|
|||
|
||||
for (scene = bmain->scenes.first; scene; scene = scene->id.next) {
|
||||
for (view_layer = scene->view_layers.first; view_layer; view_layer = view_layer->next) {
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, false);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, false);
|
||||
if (depsgraph == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -745,7 +745,7 @@ static int bake(Render *re,
|
|||
{
|
||||
/* We build a depsgraph for the baking,
|
||||
* so we don't need to change the original data to adjust visibility and modifiers. */
|
||||
Depsgraph *depsgraph = DEG_graph_new(scene, view_layer, DAG_EVAL_RENDER);
|
||||
Depsgraph *depsgraph = DEG_graph_new(bmain, scene, view_layer, DAG_EVAL_RENDER);
|
||||
DEG_graph_build_from_view_layer(depsgraph, bmain, scene, view_layer);
|
||||
|
||||
int op_result = OPERATOR_CANCELLED;
|
||||
|
|
|
@ -194,7 +194,7 @@ void ED_render_engine_changed(Main *bmain)
|
|||
update_ctx.scene = scene;
|
||||
LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
|
||||
/* TDODO(sergey): Iterate over depsgraphs instead? */
|
||||
update_ctx.depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
update_ctx.depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
update_ctx.view_layer = view_layer;
|
||||
ED_render_id_flush_update(&update_ctx, &scene->id);
|
||||
}
|
||||
|
|
|
@ -121,7 +121,7 @@ bool ED_scene_delete(bContext *C, Main *bmain, Scene *scene)
|
|||
/* Depsgraph updates after scene becomes active in a window. */
|
||||
void ED_scene_change_update(Main *bmain, Scene *scene, ViewLayer *layer)
|
||||
{
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, layer, true);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, layer, true);
|
||||
|
||||
BKE_scene_set_background(bmain, scene);
|
||||
DEG_graph_relations_update(depsgraph, bmain, scene, layer);
|
||||
|
|
|
@ -4359,7 +4359,7 @@ static int screen_animation_step(bContext *C, wmOperator *UNUSED(op), const wmEv
|
|||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, false);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, false);
|
||||
Scene *scene_eval = (depsgraph != NULL) ? DEG_get_evaluated_scene(depsgraph) : NULL;
|
||||
wmTimer *wt = screen->animtimer;
|
||||
ScreenAnimData *sad = wt->customdata;
|
||||
|
|
|
@ -581,7 +581,7 @@ const char *ED_info_stats_string(Main *bmain, Scene *scene, ViewLayer *view_laye
|
|||
if (wm->is_interface_locked) {
|
||||
return "";
|
||||
}
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
if (!view_layer->stats) {
|
||||
stats_update(depsgraph, view_layer);
|
||||
}
|
||||
|
|
|
@ -204,7 +204,7 @@ static void compo_initjob(void *cjv)
|
|||
Scene *scene = cj->scene;
|
||||
ViewLayer *view_layer = cj->view_layer;
|
||||
|
||||
cj->compositor_depsgraph = DEG_graph_new(scene, view_layer, DAG_EVAL_RENDER);
|
||||
cj->compositor_depsgraph = DEG_graph_new(bmain, scene, view_layer, DAG_EVAL_RENDER);
|
||||
DEG_graph_build_for_compositor_preview(
|
||||
cj->compositor_depsgraph, bmain, scene, view_layer, cj->ntree);
|
||||
|
||||
|
|
|
@ -519,7 +519,7 @@ static void set_trans_object_base_flags(TransInfo *t)
|
|||
ViewLayer *view_layer = t->view_layer;
|
||||
View3D *v3d = t->view;
|
||||
Scene *scene = t->scene;
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
/* NOTE: if Base selected and has parent selected:
|
||||
* base->flag_legacy = BA_WAS_SEL
|
||||
*/
|
||||
|
@ -592,8 +592,9 @@ static int count_proportional_objects(TransInfo *t)
|
|||
int total = 0;
|
||||
ViewLayer *view_layer = t->view_layer;
|
||||
View3D *v3d = t->view;
|
||||
struct Main *bmain = CTX_data_main(t->context);
|
||||
Scene *scene = t->scene;
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
/* Clear all flags we need. It will be used to detect dependencies. */
|
||||
trans_object_base_deps_flag_prepare(view_layer);
|
||||
/* Rotations around local centers are allowed to propagate, so we take all objects. */
|
||||
|
|
|
@ -160,7 +160,8 @@ BlenderStrokeRenderer::BlenderStrokeRenderer(Render *re, int render_count) : Str
|
|||
_nodetree_hash = BLI_ghash_ptr_new("BlenderStrokeRenderer::_nodetree_hash");
|
||||
|
||||
// Depsgraph
|
||||
freestyle_depsgraph = DEG_graph_new(freestyle_scene, view_layer, DAG_EVAL_RENDER);
|
||||
freestyle_depsgraph = DEG_graph_new(
|
||||
freestyle_bmain, freestyle_scene, view_layer, DAG_EVAL_RENDER);
|
||||
DEG_graph_id_tag_update(freestyle_bmain, freestyle_depsgraph, &freestyle_scene->id, 0);
|
||||
DEG_graph_id_tag_update(freestyle_bmain, freestyle_depsgraph, &object_camera->id, 0);
|
||||
DEG_graph_tag_relations_update(freestyle_depsgraph);
|
||||
|
|
|
@ -649,7 +649,7 @@ Render *FRS_do_stroke_rendering(Render *re, ViewLayer *view_layer, int render)
|
|||
/* Create depsgraph and evaluate scene. */
|
||||
ViewLayer *scene_view_layer = (ViewLayer *)BLI_findstring(
|
||||
&re->scene->view_layers, view_layer->name, offsetof(ViewLayer, name));
|
||||
Depsgraph *depsgraph = DEG_graph_new(re->scene, scene_view_layer, DAG_EVAL_RENDER);
|
||||
Depsgraph *depsgraph = DEG_graph_new(re->main, re->scene, scene_view_layer, DAG_EVAL_RENDER);
|
||||
BKE_scene_graph_update_for_newframe(depsgraph, re->main);
|
||||
|
||||
// prepare Freestyle:
|
||||
|
|
|
@ -156,7 +156,10 @@ static PointerRNA rna_ViewLayer_depsgraph_get(PointerRNA *ptr)
|
|||
if (GS(id->name) == ID_SCE) {
|
||||
Scene *scene = (Scene *)id;
|
||||
ViewLayer *view_layer = (ViewLayer *)ptr->data;
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, false);
|
||||
// NOTE: We don't allocate new depsgraph here, so the bmain is ignored. So it's easier to pass
|
||||
// NULL.
|
||||
// Still weak though.
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(NULL, scene, view_layer, false);
|
||||
return rna_pointer_inherit_refine(ptr, &RNA_Depsgraph, depsgraph);
|
||||
}
|
||||
return PointerRNA_NULL;
|
||||
|
@ -177,7 +180,7 @@ static void rna_ViewLayer_update_tagged(ID *id_ptr, ViewLayer *view_layer, Main
|
|||
# endif
|
||||
|
||||
Scene *scene = (Scene *)id_ptr;
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
/* NOTE: This is similar to CTX_data_depsgraph_pointer(). Ideally such access would be
|
||||
* de-duplicated across all possible cases, but for now this is safest and easiest way to go.
|
||||
*
|
||||
|
|
|
@ -80,7 +80,7 @@ static void rna_Scene_frame_set(Scene *scene, Main *bmain, int frame, float subf
|
|||
|
||||
for (ViewLayer *view_layer = scene->view_layers.first; view_layer != NULL;
|
||||
view_layer = view_layer->next) {
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
BKE_scene_graph_update_for_newframe(depsgraph, bmain);
|
||||
}
|
||||
|
||||
|
@ -156,7 +156,7 @@ static void rna_Scene_ray_cast(Scene *scene,
|
|||
{
|
||||
normalize_v3(direction);
|
||||
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
SnapObjectContext *sctx = ED_transform_snap_object_context_create(bmain, scene, depsgraph, 0);
|
||||
|
||||
bool ret = ED_transform_snap_object_project_ray_ex(sctx,
|
||||
|
|
|
@ -40,6 +40,7 @@ static void rna_RegionView3D_update(ID *id, RegionView3D *rv3d, bContext *C)
|
|||
area_region_from_regiondata(sc, rv3d, &sa, &ar);
|
||||
|
||||
if (sa && ar && sa->spacetype == SPACE_VIEW3D) {
|
||||
Main *bmain = CTX_data_main(C);
|
||||
View3D *v3d = sa->spacedata.first;
|
||||
wmWindowManager *wm = CTX_wm_manager(C);
|
||||
wmWindow *win;
|
||||
|
@ -48,7 +49,7 @@ static void rna_RegionView3D_update(ID *id, RegionView3D *rv3d, bContext *C)
|
|||
if (WM_window_get_active_screen(win) == sc) {
|
||||
Scene *scene = WM_window_get_active_scene(win);
|
||||
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
|
||||
ED_view3d_update_viewmat(depsgraph, scene, v3d, ar, NULL, NULL, NULL, false);
|
||||
break;
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_library.h"
|
||||
#include "BKE_scene.h"
|
||||
|
||||
|
@ -238,7 +239,7 @@ static PyObject *bpygpu_offscreen_draw_view3d(BPyGPUOffScreen *self,
|
|||
|
||||
BLI_assert(BKE_id_is_in_global_main(&scene->id));
|
||||
|
||||
depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
depsgraph = BKE_scene_get_depsgraph(G_MAIN, scene, view_layer, true);
|
||||
|
||||
rv3d_mats = ED_view3d_mats_rv3d_backup(ar->regiondata);
|
||||
|
||||
|
|
|
@ -509,7 +509,7 @@ static void engine_depsgraph_init(RenderEngine *engine, ViewLayer *view_layer)
|
|||
Main *bmain = engine->re->main;
|
||||
Scene *scene = engine->re->scene;
|
||||
|
||||
engine->depsgraph = DEG_graph_new(scene, view_layer, DAG_EVAL_RENDER);
|
||||
engine->depsgraph = DEG_graph_new(bmain, scene, view_layer, DAG_EVAL_RENDER);
|
||||
DEG_debug_name_set(engine->depsgraph, "RENDER");
|
||||
|
||||
if (engine->re->r.scemode & R_BUTS_PREVIEW) {
|
||||
|
|
|
@ -1953,7 +1953,7 @@ static void update_physics_cache(Render *re,
|
|||
baker.bmain = re->main;
|
||||
baker.scene = scene;
|
||||
baker.view_layer = view_layer;
|
||||
baker.depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
baker.depsgraph = BKE_scene_get_depsgraph(re->main, scene, view_layer, true);
|
||||
baker.bake = 0;
|
||||
baker.render = 1;
|
||||
baker.anim_init = 1;
|
||||
|
@ -2069,7 +2069,7 @@ static void render_init_depsgraph(Render *re)
|
|||
Scene *scene = re->scene;
|
||||
ViewLayer *view_layer = BKE_view_layer_default_render(re->scene);
|
||||
|
||||
re->pipeline_depsgraph = DEG_graph_new(scene, view_layer, DAG_EVAL_RENDER);
|
||||
re->pipeline_depsgraph = DEG_graph_new(re->main, scene, view_layer, DAG_EVAL_RENDER);
|
||||
DEG_debug_name_set(re->pipeline_depsgraph, "RENDER PIPELINE");
|
||||
|
||||
/* Make sure there is a correct evaluated scene pointer. */
|
||||
|
|
|
@ -831,11 +831,11 @@ static void wm_draw_window(bContext *C, wmWindow *win)
|
|||
/****************** main update call **********************/
|
||||
|
||||
/* quick test to prevent changing window drawable */
|
||||
static bool wm_draw_update_test_window(wmWindow *win)
|
||||
static bool wm_draw_update_test_window(Main *bmain, wmWindow *win)
|
||||
{
|
||||
Scene *scene = WM_window_get_active_scene(win);
|
||||
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
|
||||
struct Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
struct Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
bScreen *screen = WM_window_get_active_screen(win);
|
||||
ARegion *ar;
|
||||
bool do_draw = false;
|
||||
|
@ -936,7 +936,7 @@ void wm_draw_update(bContext *C)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (wm_draw_update_test_window(win)) {
|
||||
if (wm_draw_update_test_window(bmain, win)) {
|
||||
bScreen *screen = WM_window_get_active_screen(win);
|
||||
|
||||
CTX_wm_window_set(C, win);
|
||||
|
|
|
@ -360,7 +360,7 @@ void wm_event_do_depsgraph(bContext *C, bool is_after_open_file)
|
|||
* and for until then we have to accept ambiguities when object is shared
|
||||
* across visible view layers and has overrides on it.
|
||||
*/
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true);
|
||||
if (is_after_open_file) {
|
||||
DEG_graph_relations_update(depsgraph, bmain, scene, view_layer);
|
||||
DEG_graph_on_visible_update(bmain, depsgraph, true);
|
||||
|
@ -3260,9 +3260,10 @@ void wm_event_do_handlers(bContext *C)
|
|||
wm_event_free_all(win);
|
||||
}
|
||||
else {
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = WM_window_get_active_scene(win);
|
||||
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, false);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, false);
|
||||
Scene *scene_eval = (depsgraph != NULL) ? DEG_get_evaluated_scene(depsgraph) : NULL;
|
||||
|
||||
if (scene_eval != NULL) {
|
||||
|
|
|
@ -215,7 +215,7 @@ static void sound_jack_sync_callback(Main *bmain, int mode, float time)
|
|||
continue;
|
||||
}
|
||||
ViewLayer *view_layer = WM_window_get_active_view_layer(window);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, false);
|
||||
Depsgraph *depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, false);
|
||||
if (depsgraph == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ class AlembicExportTest : public testing::Test {
|
|||
|
||||
/* TODO(sergey): Pass scene layer somehow? */
|
||||
ViewLayer *view_layer = (ViewLayer *)scene.view_layers.first;
|
||||
settings.depsgraph = depsgraph = DEG_graph_new(&scene, view_layer, DAG_EVAL_VIEWPORT);
|
||||
settings.depsgraph = depsgraph = DEG_graph_new(bmain, &scene, view_layer, DAG_EVAL_VIEWPORT);
|
||||
|
||||
settings.scene = &scene;
|
||||
settings.view_layer = view_layer;
|
||||
|
|
Loading…
Reference in New Issue