Thank you for porting this !! :)

Cheers,
dh

On 23/07/13 02:29, Sung W. Park - Enlightenment Git wrote:
> sung pushed a commit to branch master.
>
> commit 7aa516c01a620da3438de864ac0c0e5b80c93d0b
> Author: Sung W. Park <dunamis.p...@samsung.com>
> Date:   Tue Jul 23 10:23:36 2013 +0900
>
>      Evas: adding image dump debug feature for wayland_egl backend
>      
>      Porting commit f10c108283d9b76708418ba172b9ff0b28a09cd6 to wayland
>      engine.
>      
>      Added a feature to dump out a png image before calling SwapBuffers.
>      To turn on the feature, use the following env vars.
>      
>      EVAS_GL_SWAP_BUFFER_DEBUG_DIR="dir_name" sets the name of the directory
>      that the files will be output to and enables the debug mode.
>      
>      EVAS_GL_SWAP_BUFFER_DEBUG_ALWAYS=1 will enable the writing of the
>      files every frame.  This in effect turns on the swap_buffer_debug
>      variable, which can be set on or off in gdb for debugging.  This will
>      allow dumping of certain frames without having to dump out a ton of
>      files to track down one frame.
> ---
>   src/modules/evas/engines/wayland_egl/evas_engine.c | 43 
> ++++++++++++++++++++++
>   1 file changed, 43 insertions(+)
>
> diff --git a/src/modules/evas/engines/wayland_egl/evas_engine.c 
> b/src/modules/evas/engines/wayland_egl/evas_engine.c
> index 1db4dbd..65edcca 100644
> --- a/src/modules/evas/engines/wayland_egl/evas_engine.c
> +++ b/src/modules/evas/engines/wayland_egl/evas_engine.c
> @@ -41,6 +41,7 @@ struct _Render_Engine
>      Eina_Bool lost_back : 1;
>      Eina_Bool end : 1;
>      Eina_Bool evgl_initted : 1;
> +   int       frame_cnt;
>   
>      struct
>        {
> @@ -103,6 +104,9 @@ static Eina_Bool extn_have_buffer_age = EINA_TRUE;
>   static int safe_native = -1;
>   static int partial_rect_union_mode = -1;
>   
> +static int swap_buffer_debug_mode = -1;
> +static int swap_buffer_debug = 0;
> +
>   /* function tables - filled in later (func and parent func) */
>   static Evas_Func func, pfunc;
>   static EVGL_Interface evgl_funcs =
> @@ -1188,6 +1192,7 @@ static void
>   eng_output_flush(void *data, Evas_Render_Mode render_mode)
>   {
>      Render_Engine *re;
> +   static char *dname = NULL;
>   
>      if (!(re = (Render_Engine *)data)) return;
>   
> @@ -1201,6 +1206,41 @@ eng_output_flush(void *data, Evas_Render_Mode 
> render_mode)
>   
>      evas_gl_common_context_done(re->win->gl_context);
>   
> +   // Save contents of the framebuffer to a file
> +   if (swap_buffer_debug_mode == -1)
> +     {
> +        if ((dname = getenv("EVAS_GL_SWAP_BUFFER_DEBUG_DIR")))
> +          {
> +             int stat;
> +             // Create a directory with 0775 permission
> +             stat = mkdir(dname, S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH);
> +             if ((!stat) || errno == EEXIST) swap_buffer_debug_mode = 1;
> +          }
> +        else
> +           swap_buffer_debug_mode = 0;
> +     }
> +
> +   if (swap_buffer_debug_mode == 1)
> +     {
> +        // Set this env var to dump files every frame
> +        // Or set the global var in gdb to 1|0 to turn it on and off
> +        if (getenv("EVAS_GL_SWAP_BUFFER_DEBUG_ALWAYS"))
> +           swap_buffer_debug = 1;
> +
> +        if (swap_buffer_debug)
> +          {
> +             char fname[100];
> +             int ret = 0;
> +             sprintf(fname, "%p", (void*)re->win);
> +
> +             ret = evas_gl_common_buffer_dump(re->win->gl_context,
> +                                              (const char*)dname,
> +                                              (const char*)fname,
> +                                              re->frame_cnt);
> +             if (!ret) swap_buffer_debug_mode = 0;
> +          }
> +     }
> +
>      if (!re->vsync)
>        {
>           if (re->info->vsync) eglSwapInterval(re->win->egl_disp, 1);
> @@ -1278,6 +1318,9 @@ eng_output_flush(void *data, Evas_Render_Mode 
> render_mode)
>           evas_common_tilebuf_free_render_rects(re->rects);
>           re->rects = NULL;
>        }
> +
> +   re->frame_cnt++;
> +
>   end:
>      evas_gl_preload_render_unlock(eng_gl_preload_make_current, re);
>   }
>


------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to