Commit: ae0c36f82bc4d574a043b9148745a0ba3130395c
Author: Clément Foucault
Date:   Mon Apr 16 22:55:02 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBae0c36f82bc4d574a043b9148745a0ba3130395c

Object Mode: Outline: Perf: Only do outlines detection if needed.

===================================================================

M       source/blender/draw/modes/object_mode.c

===================================================================

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! */

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to