raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d6ed9e048d476125508cb89b934cf1f80cdcd80a

commit d6ed9e048d476125508cb89b934cf1f80cdcd80a
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Mon Nov 7 11:26:22 2016 +0900

    evas render evlog - add more evlog spots to help identify issues
    
    this adds more logging spots to provide to evlog + efl debugd so we
    can identify issues much more easily
---
 src/lib/evas/canvas/evas_render.c | 62 ++++++++++++++++++++++++++++++++++++---
 1 file changed, 58 insertions(+), 4 deletions(-)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index b404724..e4c5533 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -1342,6 +1342,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
    if (obj->cur->clipper && !obj->cur->clipper->cur->visible)
      return clean_them;
 
+   eina_evlog("+render_object", eo_obj, 0.0, NULL);
 #ifdef REND_DBG
    RD(level, "{\n");
    RD(level, "  evas_render_mapped(evas:%p, obj:%p", evas->evas, obj->object);
@@ -1390,6 +1391,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                {
                   RD(level, "  not rendering mask surface\n");
                   RD(level, "}\n");
+                  eina_evlog("-render_object", eo_obj, 0.0, NULL);
                   return clean_them;
                }
              // else don't return: draw mask in its surface
@@ -1405,6 +1407,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                        IFRD(obj->clip.clipees || obj->cur->have_clipees, 
level, "  has clippees\n");
                        IFRD(!evas_object_is_visible(eo_obj, obj), level, "  
not visible\n");
                        RD(level, "}\n");
+                       eina_evlog("-render_object", eo_obj, 0.0, NULL);
                        return clean_them;
                     }
                }
@@ -1419,6 +1422,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                        IFRD(!obj->cur->visible, level, "  proxy_src_clip + not 
visible\n");
                        IFRD(!obj->cur->color.a && (obj->cur->render_op == 
EVAS_RENDER_BLEND), level, "  proxy_src_clip + 0 alpha\n");
                        RD(level, "}\n");
+                       eina_evlog("-render_object", eo_obj, 0.0, NULL);
                        return clean_them;
                     }
                   else if (proxy_render_data && (surface != 
obj->proxy->surface) &&
@@ -1426,6 +1430,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                     {
                        RD(level, "  src_invisible + not proxy surface 
(recursive proxies)\n");
                        RD(level, "}\n");
+                       eina_evlog("-render_object", eo_obj, 0.0, NULL);
                        return clean_them;
                     }
                }
@@ -1436,12 +1441,14 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
              IFRD(!evas_object_is_proxy_visible(eo_obj, obj), level, "  proxy 
not visible\n");
              IFRD(obj->clip.clipees || obj->cur->have_clipees, level, "  has 
clippees\n");
              RD(level, "}\n");
+             eina_evlog("-render_object", eo_obj, 0.0, NULL);
              return clean_them;
           }
         else if (obj->no_render && (!use_mapped_ctx || (surface != 
obj->proxy->surface)))
           {
              RD(level, "  no_render\n");
              RD(level, "}\n");
+             eina_evlog("-render_object", eo_obj, 0.0, NULL);
              return clean_them;
           }
      }
@@ -1453,6 +1460,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
         IFRD(!_evas_render_can_render(eo_obj, obj), level, "  can't render\n");
         IFRD(obj->clip.clipees, level, "  has clippees\n");
         RD(level, "}\n");
+        eina_evlog("-render_object", eo_obj, 0.0, NULL);
         return clean_them;
      }
 
@@ -1475,6 +1483,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
         if ((sw <= 0) || (sh <= 0))
           {
              RD(level, "}\n");
+             eina_evlog("-render_object", eo_obj, 0.0, NULL);
              return clean_them;
           }
 
@@ -1720,7 +1729,10 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                   else if (!proxy_src_clip)
                     {
                        if (!_proxy_context_clip(evas, ctx, proxy_render_data, 
obj, off_x, off_y))
-                         return clean_them;
+                         {
+                            eina_evlog("-render_object", eo_obj, 0.0, NULL);
+                            return clean_them;
+                         }
                     }
 
 #ifdef REND_DBG
@@ -1769,7 +1781,10 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                        else
                          {
                             if (!_proxy_context_clip(evas, ctx, 
proxy_render_data, obj, off_x, off_y))
-                              return clean_them;
+                              {
+                                 eina_evlog("-render_object", eo_obj, 0.0, 
NULL);
+                                 return clean_them;
+                              }
                          }
 
                        /* Clipper masks */
@@ -1838,7 +1853,10 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                   else
                     {
                        if (!_proxy_context_clip(evas, ctx, proxy_render_data, 
obj, off_x, off_y))
-                         return clean_them;
+                         {
+                            eina_evlog("-render_object", eo_obj, 0.0, NULL);
+                            return clean_them;
+                         }
                     }
                }
 
@@ -1857,6 +1875,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
      }
    RD(level, "}\n");
 
+   eina_evlog("-render_object", eo_obj, 0.0, NULL);
    return clean_them;
 }
 
@@ -1882,6 +1901,7 @@ evas_render_proxy_subrender(Evas *eo_e, Evas_Object 
*eo_source, Evas_Object *eo_
 #endif
 
    if (!eo_source) return;
+   eina_evlog("+proxy_subrender", eo_proxy, 0.0, NULL);
    source = efl_data_scope_get(eo_source, EFL_CANVAS_OBJECT_CLASS);
 
    w = source->cur->geometry.w;
@@ -1915,11 +1935,13 @@ evas_render_proxy_subrender(Evas *eo_e, Evas_Object 
*eo_source, Evas_Object *eo_
              proxy_write->h = h;
           }
 
+        eina_evlog("+proxy_fill", eo_proxy, 0.0, NULL);
         ctx = ENFN->context_new(ENDT);
         ENFN->context_color_set(ENDT, ctx, 0, 0,0, 0);
         ENFN->context_render_op_set(ENDT, ctx, EVAS_RENDER_COPY);
         ENFN->rectangle_draw(ENDT, ctx, proxy_write->surface, 0, 0, w, h, 
do_async);
         ENFN->context_free(ENDT, ctx);
+        eina_evlog("-proxy_fill", eo_proxy, 0.0, NULL);
 
         if (efl_isa(eo_proxy, EFL_CANVAS_IMAGE_INTERNAL_CLASS))
           source_clip = _evas_image_proxy_source_clip_get(eo_proxy);
@@ -1950,6 +1972,7 @@ evas_render_proxy_subrender(Evas *eo_e, Evas_Object 
*eo_source, Evas_Object *eo_
      }
  end:
    EINA_COW_WRITE_END(evas_object_proxy_cow, source->proxy, proxy_write);
+   eina_evlog("-proxy_subrender", eo_proxy, 0.0, NULL);
 }
 
 /* @internal
@@ -1975,6 +1998,7 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
         return;
      }
 
+   eina_evlog("+mask_subrender", mask->object, 0.0, NULL);
    RD(level, "evas_render_mask_subrender(%p, prev: %p)\n", mask, prev_mask);
 
    is_image = efl_isa(mask->object, EFL_CANVAS_IMAGE_INTERNAL_CLASS);
@@ -2042,6 +2066,7 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
 
           if (!border && filled && !prev_mask && mask->func->engine_data_get)
             {
+               eina_evlog("+mask_scaled_update", mask->object, 0.0, NULL);
                /* Fast path (for GL) that avoids creating a map surface, 
render the
                 * scaled image in it, when the shaders can just scale on the 
fly. */
                Eina_Bool smooth = 
evas_object_image_smooth_scale_get(mask->object);
@@ -2057,6 +2082,7 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
                     mdata->is_alpha = (ENFN->image_colorspace_get(ENDT, 
scaled) == EVAS_COLORSPACE_GRY8);
                     mdata->is_scaled = EINA_TRUE;
                  }
+               eina_evlog("-mask_scaled_update", mask->object, 0.0, NULL);
             }
        }
 
@@ -2073,7 +2099,9 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
           /* create new RGBA render surface if needed */
           if (!mdata->surface)
             {
+               eina_evlog("+mask_surface_new", mask->object, 0.0, NULL);
                mdata->surface = ENFN->image_map_surface_new(ENDT, w, h, 
EINA_TRUE);
+               eina_evlog("-mask_surface_new", mask->object, 0.0, NULL);
                if (!mdata->surface) goto end;
                mdata->is_alpha = EINA_FALSE;
                mdata->is_scaled = EINA_FALSE;
@@ -2082,11 +2110,13 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
             }
 
           /* Clear surface with transparency */
+          eina_evlog("+mask_rect_clear", mask->object, 0.0, NULL);
           ctx = ENFN->context_new(ENDT);
           ENFN->context_color_set(ENDT, ctx, 0, 0, 0, 0);
           ENFN->context_render_op_set(ENDT, ctx, EVAS_RENDER_COPY);
           ENFN->rectangle_draw(ENDT, ctx, mdata->surface, 0, 0, w, h, 
EINA_FALSE);
           ENFN->context_free(ENDT, ctx);
+          eina_evlog("-mask_rect_clear", mask->object, 0.0, NULL);
 
           /* Render mask to RGBA surface */
           ctx = ENFN->context_new(ENDT);
@@ -2118,16 +2148,20 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
                DATA32 *rgba;
                DATA8* alpha;
 
+               eina_evlog("+mask_new_cpy_data", mask->object, 0.0, NULL);
                alpha_surface = ENFN->image_new_from_copied_data
                      (ENDT, w, h, NULL, EINA_TRUE, EVAS_COLORSPACE_GRY8);
+               eina_evlog("-mask_new_cpy_data", mask->object, 0.0, NULL);
                if (!alpha_surface) goto end;
 
+               eina_evlog("+mask_cpy_data", mask->object, 0.0, NULL);
                /* Copy alpha channel */
                rgba = ((RGBA_Image *) mdata->surface)->image.data;
                alpha = alpha_surface->image.data8;
                for (y = h; y; --y)
                  for (x = w; x; --x, alpha++, rgba++)
                    *alpha = (DATA8) A_VAL(rgba);
+               eina_evlog("-mask_cpy_data", mask->object, 0.0, NULL);
 
                /* Now we can drop the original surface */
                ENFN->image_free(ENDT, mdata->surface);
@@ -2153,6 +2187,7 @@ end:
           }
         EINA_COW_STATE_WRITE_END(mask, state_write, cur);
      }
+   eina_evlog("-mask_subrender", mask->object, 0.0, NULL);
 }
 
 static void
@@ -2425,6 +2460,7 @@ evas_render_updates_internal_loop(Evas *eo_e, 
Evas_Public_Data *e,
                          }
                     }
 
+                  eina_evlog("+cutouts_add", obj->object, 0.0, NULL);
 #if 1 /* FIXME: this can slow things down... figure out optimum... coverage */
                   for (j = *offset; j < e->temporary_objects.count; ++j)
                     {
@@ -2449,6 +2485,7 @@ evas_render_updates_internal_loop(Evas *eo_e, 
Evas_Public_Data *e,
                          _evas_render_cutout_add(e, context, obj2, off_x + fx, 
off_y + fy);
                     }
 #endif
+                  eina_evlog("-cutouts_add", obj->object, 0.0, NULL);
                   clean_them |= evas_render_mapped(e, eo_obj, obj, context,
                                                    surface, off_x + fx,
                                                    off_y + fy, 0,
@@ -2716,6 +2753,7 @@ evas_render_updates_internal(Evas *eo_e,
 
              /* phase 6.1 render every snapshot that needs to be updated
                 for this part of the screen */
+             eina_evlog("+render_snapshots", eo_e, 0.0, NULL);
              for (j = e->snapshot_objects.count - 1; j >= 0; j--)
                {
                   Eina_Rectangle output, cr, ur;
@@ -2759,7 +2797,9 @@ evas_render_updates_internal(Evas *eo_e,
                        offset = restore_offset;
                     }
                }
+             eina_evlog("-render_snapshots", eo_e, 0.0, NULL);
 
+             eina_evlog("+render_update", eo_e, 0.0, NULL);
              /* phase 6.2 render all the object on the target surface */
              if ((do_async) || (make_updates))
                {
@@ -2779,6 +2819,7 @@ evas_render_updates_internal(Evas *eo_e,
                                                              fx, fy, alpha,
                                                              do_async,
                                                              &offset, 0);
+             eina_evlog("-render_update", eo_e, 0.0, NULL);
              if (!do_async)
                {
                   eina_evlog("+render_push", eo_e, 0.0, NULL);
@@ -2792,12 +2833,14 @@ evas_render_updates_internal(Evas *eo_e,
 
         if (do_async)
           {
+             eina_evlog("+render_output_async_flush", eo_e, 0.0, NULL);
              efl_ref(eo_e);
              e->rendering = EINA_TRUE;
              _rendering_evases = eina_list_append(_rendering_evases, e);
              if (haveup)
                _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL);
              evas_thread_queue_flush((Evas_Thread_Command_Cb)done_func, 
done_data);
+             eina_evlog("-render_output_async_flush", eo_e, 0.0, NULL);
           }
         else if (haveup)
           {
@@ -2863,6 +2906,7 @@ evas_render_updates_internal(Evas *eo_e,
    eina_array_remove(&e->pending_objects, pending_change, NULL);
 
    /* Reinsert parent of changed object in the pending changed state */
+   eina_evlog("+render_post_change", eo_e, 0.0, NULL);
    for (i = 0; i < e->pending_objects.count; ++i)
      {
         obj = eina_array_data_get(&e->pending_objects, i);
@@ -2876,7 +2920,9 @@ evas_render_updates_internal(Evas *eo_e,
              evas_object_change(obj->smart.parent, smart_parent);
           }
      }
+   eina_evlog("-render_post_change", eo_e, 0.0, NULL);
 
+   eina_evlog("+render_post_reset", eo_e, 0.0, NULL);
    for (i = 0; i < e->render_objects.count; ++i)
      {
         obj = eina_array_data_get(&e->render_objects, i);
@@ -2889,8 +2935,9 @@ evas_render_updates_internal(Evas *eo_e,
              evas_object_change_reset(eo_obj);
           }
      }
+   eina_evlog("-render_post_reset", eo_e, 0.0, NULL);
 
-
+   eina_evlog("+render_end", eo_e, 0.0, NULL);
    e->changed = EINA_FALSE;
    e->viewport.changed = EINA_FALSE;
    e->output.changed = EINA_FALSE;
@@ -2962,6 +3009,7 @@ evas_render_updates_internal(Evas *eo_e,
 #endif
 
    if (!do_async) _evas_render_cleanup();
+   eina_evlog("-render_end", eo_e, 0.0, NULL);
    return EINA_TRUE;
 }
 
@@ -2989,6 +3037,7 @@ evas_render_wakeup(Evas *eo_e)
    Eina_List *ret_updates = NULL;
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
 
+   eina_evlog("+render_wakeup", eo_e, 0.0, NULL);
    eina_spinlock_take(&(e->render.lock));
    EINA_LIST_FREE(e->render.updates, ru)
      {
@@ -3036,6 +3085,7 @@ evas_render_wakeup(Evas *eo_e)
 
    evas_render_updates_free(ret_updates);
 
+   eina_evlog("-render_wakeup", eo_e, 0.0, NULL);
    efl_unref(eo_e);
 
 #ifdef EVAS_RENDER_DEBUG_TIMING
@@ -3058,6 +3108,7 @@ evas_render_pipe_wakeup(void *data)
    Render_Updates *ru;
    Evas_Public_Data *e = data;
 
+   eina_evlog("+render_pipe_wakeup", e->evas, 0.0, NULL);
    eina_spinlock_take(&(e->render.lock));
    EINA_LIST_FOREACH(e->render.updates, l, ru)
      {
@@ -3076,6 +3127,7 @@ evas_render_pipe_wakeup(void *data)
                                 EVAS_RENDER_MODE_ASYNC_END);
    eina_evlog("-render_output_flush", e->evas, 0.0, NULL);
    evas_async_events_put(data, 0, NULL, evas_render_async_wakeup);
+   eina_evlog("-render_pipe_wakeup", e->evas, 0.0, NULL);
 }
 
 EAPI void
@@ -3208,6 +3260,7 @@ _evas_canvas_norender(Eo *eo_e, Evas_Public_Data *e)
 EOLIAN void
 _evas_canvas_render_idle_flush(Eo *eo_e, Evas_Public_Data *e)
 {
+   eina_evlog("+idle_flush", eo_e, 0.0, NULL);
    if (e->render2) _evas_render2_idle_flush(eo_e, e);
    else
      {
@@ -3232,6 +3285,7 @@ _evas_canvas_render_idle_flush(Eo *eo_e, Evas_Public_Data 
*e)
 
         e->invalidate = EINA_TRUE;
      }
+   eina_evlog("-idle_flush", eo_e, 0.0, NULL);
 }
 
 EOLIAN void

-- 


Reply via email to