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
path: root/source
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-04-16 23:55:02 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-04-16 23:55:02 +0300
commitae0c36f82bc4d574a043b9148745a0ba3130395c (patch)
tree5aa7f62d82c14f6eea3ea93158c70badd7d74bff /source
parentf92e92b1c041582f5d31620f734951daeee3d552 (diff)
Object Mode: Outline: Perf: Only do outlines detection if needed.
Diffstat (limited to 'source')
-rw-r--r--source/blender/draw/modes/object_mode.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c
index 4bdd1444898..efbd43f6aac 100644
--- a/source/blender/draw/modes/object_mode.c
+++ b/source/blender/draw/modes/object_mode.c
@@ -2072,16 +2072,18 @@ static void OBJECT_draw_scene(void *vedata)
DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
+ int id_ct_select = g_data->id_ofs_select;
+ int id_ct_select_group = g_data->id_ofs_select_group;
+ int id_ct_active = g_data->id_ofs_active;
+ int id_ct_active_group = g_data->id_ofs_active_group;
+ int id_ct_transform = g_data->id_ofs_transform;
+ int outline_calls = id_ct_select + id_ct_select_group + id_ct_active + id_ct_active_group + id_ct_transform;
+
float clearcol[4] = {0.0f, 0.0f, 0.0f, 0.0f};
- if (DRW_state_is_fbo()) {
+ if (DRW_state_is_fbo() && outline_calls > 0) {
DRW_stats_group_start("Outlines");
- int id_ct_select = g_data->id_ofs_select;
- int id_ct_select_group = g_data->id_ofs_select_group;
- int id_ct_active = g_data->id_ofs_active;
- int id_ct_active_group = g_data->id_ofs_active_group;
-
g_data->id_ofs_active = 1;
g_data->id_ofs_active_group = g_data->id_ofs_active + id_ct_active + 1;
g_data->id_ofs_select = g_data->id_ofs_active_group + id_ct_active_group + 1;
@@ -2137,7 +2139,9 @@ static void OBJECT_draw_scene(void *vedata)
}
/* Combine with scene buffer last */
- DRW_draw_pass(psl->outlines_resolve);
+ if (outline_calls > 0) {
+ DRW_draw_pass(psl->outlines_resolve);
+ }
}
/* This has to be freed only after drawing empties! */