diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-05-08 00:21:16 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-05-08 18:52:48 +0300 |
commit | 0030e4da7073d62561cca508330ab150b37ee6eb (patch) | |
tree | c1d25b9a92ed3aeb4f9c3bee03e32de7e721a7f4 /source/blender/draw/intern/draw_manager.c | |
parent | 05b0f52aa78344a4a74b816fd1d025aa344ec28c (diff) |
DRW: Make batch validation run first during iteration
This reduces the cost of querying the batches to the batch cache.
Diffstat (limited to 'source/blender/draw/intern/draw_manager.c')
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 95f34fec131..773a5ec2c9c 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1157,6 +1157,8 @@ static void drw_engines_cache_populate(Object *ob) * ourselves here. */ drw_drawdata_unlink_dupli((ID *)ob); + drw_batch_cache_validate(ob); + int i = 0; for (LinkData *link = DST.enabled_engines.first; link; link = link->next, i++) { DrawEngineType *engine = link->data; @@ -2096,6 +2098,9 @@ void DRW_render_object_iter( DST.dupli_parent = data_.dupli_parent; DST.dupli_source = data_.dupli_object_current; DST.ob_state = NULL; + + drw_batch_cache_validate(ob); + callback(vedata, ob, engine, depsgraph); drw_batch_cache_generate_requested(DST.dupli_source ? DST.dupli_source->ob : ob); |