diff options
author | Antonioya <blendergit@gmail.com> | 2019-01-30 18:26:06 +0300 |
---|---|---|
committer | Antonioya <blendergit@gmail.com> | 2019-01-30 18:29:38 +0300 |
commit | 6164983f9d8d86ea5273f9205647dd9afecec2b6 (patch) | |
tree | b3bd67fdff1468abacd1a3cda0fafc9a652ee9f0 /source/blender/draw/engines/gpencil | |
parent | 1ceaca7f646c90f601dd53e4843d914e25289df2 (diff) |
GP: Remove DEG_get_original_id() from draw manager
Only keep this function when drawing to avoid COW overhead that reduce performance.
After some changes I did some time ago, the use of original ID was not required and this only added depsgraph overhead and problems.
This change solves the problems with updates in render mode.
Related to T57484 and the changes requested by Sergey.
Diffstat (limited to 'source/blender/draw/engines/gpencil')
-rw-r--r-- | source/blender/draw/engines/gpencil/gpencil_cache_utils.c | 22 | ||||
-rw-r--r-- | source/blender/draw/engines/gpencil/gpencil_draw_utils.c | 3 |
2 files changed, 9 insertions, 16 deletions
diff --git a/source/blender/draw/engines/gpencil/gpencil_cache_utils.c b/source/blender/draw/engines/gpencil/gpencil_cache_utils.c index 3c3125a0fd6..115af01f795 100644 --- a/source/blender/draw/engines/gpencil/gpencil_cache_utils.c +++ b/source/blender/draw/engines/gpencil/gpencil_cache_utils.c @@ -42,7 +42,6 @@ #include "draw_cache_impl.h" #include "DEG_depsgraph.h" -#include "DEG_depsgraph_query.h" /* add a gpencil object to cache to defer drawing */ tGPencilObjectCache *gpencil_object_cache_add( @@ -72,9 +71,8 @@ tGPencilObjectCache *gpencil_object_cache_add( cache_elem = &cache_array[*gp_cache_used]; memset(cache_elem, 0, sizeof(*cache_elem)); - Object *ob_orig = (Object *)DEG_get_original_id(&ob->id); - cache_elem->ob = ob_orig; - cache_elem->gpd = (bGPdata *)ob_orig->data; + cache_elem->ob = ob; + cache_elem->gpd = (bGPdata *)ob->data; copy_v3_v3(cache_elem->loc, ob->obmat[3]); copy_m4_m4(cache_elem->obmat, ob->obmat); cache_elem->idx = *gp_cache_used; @@ -85,7 +83,7 @@ tGPencilObjectCache *gpencil_object_cache_add( /* save FXs */ cache_elem->pixfactor = cache_elem->gpd->pixfactor; - cache_elem->shader_fx = ob_orig->shader_fx; + cache_elem->shader_fx = ob->shader_fx; /* shgrp array */ cache_elem->tot_layers = 0; @@ -171,8 +169,7 @@ GpencilBatchGroup *gpencil_group_cache_add( /* get current cache data */ static GpencilBatchCache *gpencil_batch_get_element(Object *ob) { - Object *ob_orig = (Object *)DEG_get_original_id(&ob->id); - return ob_orig->runtime.gpencil_cache; + return ob->runtime.gpencil_cache; } /* verify if cache is valid */ @@ -214,14 +211,13 @@ static bool gpencil_batch_cache_valid(GpencilBatchCache *cache, bGPdata *gpd, in /* cache init */ static GpencilBatchCache *gpencil_batch_cache_init(Object *ob, int cfra) { - Object *ob_orig = (Object *)DEG_get_original_id(&ob->id); - bGPdata *gpd = (bGPdata *)ob_orig->data; + bGPdata *gpd = (bGPdata *)ob->data; GpencilBatchCache *cache = gpencil_batch_get_element(ob); if (!cache) { cache = MEM_callocN(sizeof(*cache), __func__); - ob_orig->runtime.gpencil_cache = cache; + ob->runtime.gpencil_cache = cache; } else { memset(cache, 0, sizeof(*cache)); @@ -277,8 +273,7 @@ static void gpencil_batch_cache_clear(GpencilBatchCache *cache) /* get cache */ GpencilBatchCache *gpencil_batch_cache_get(Object *ob, int cfra) { - Object *ob_orig = (Object *)DEG_get_original_id(&ob->id); - bGPdata *gpd = (bGPdata *)ob_orig->data; + bGPdata *gpd = (bGPdata *)ob->data; GpencilBatchCache *cache = gpencil_batch_get_element(ob); if (!gpencil_batch_cache_valid(cache, gpd, cfra)) { @@ -295,8 +290,7 @@ GpencilBatchCache *gpencil_batch_cache_get(Object *ob, int cfra) /* set cache as dirty */ void DRW_gpencil_batch_cache_dirty_tag(bGPdata *gpd) { - bGPdata *gpd_orig = (bGPdata *)DEG_get_original_id(&gpd->id); - gpd_orig->flag |= GP_DATA_CACHE_IS_DIRTY; + gpd->flag |= GP_DATA_CACHE_IS_DIRTY; } /* free batch cache */ diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c index 35515db9cc0..6ffe44e096e 100644 --- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c +++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c @@ -1537,8 +1537,7 @@ void DRW_gpencil_populate_datablock( const ViewLayer *view_layer = DEG_get_evaluated_view_layer(draw_ctx->depsgraph); Scene *scene = draw_ctx->scene; - bGPdata *gpd_eval = (bGPdata *)ob->data; - bGPdata *gpd = (bGPdata *)DEG_get_original_id(&gpd_eval->id); + bGPdata *gpd = (bGPdata *)ob->data; View3D *v3d = draw_ctx->v3d; int cfra_eval = (int)DEG_get_ctime(draw_ctx->depsgraph); |